(* [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 -> term
  | noncea_old : term -> term -> term -> term
  | nonceb_current : term -> term -> term -> term -> term
  | nonceb_old : term -> term -> term -> term -> term
  | prv : term
  | pub : term
  | s : term -> term
  | server : term
  | session_old : term -> term -> term -> term
  | sym : term
.

(* [modd] Model definition. *)

Inductive auto__q1 : term -> Prop :=
    trans__q1_noncea_old_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_2 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_6 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_8 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_9 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_10 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_11 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_12 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_13 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_14 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_15 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_16 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_17 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_18 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_19 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_20 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_21 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_23 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_noncea_old_24 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (noncea_old X1 X2 X3)
  | trans__q1_crypt_1 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 (crypt X1 X2)
  | trans__q1_crypt_2 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 (crypt X1 X2)
  | trans__q1_crypt_3 : forall X1 X2:term, auto__q1 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_noncea_current_1 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (noncea_current X1 X2 X3)
  | trans__q1_noncea_current_2 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (noncea_current X1 X2 X3)
  | trans__q1_s_1 : forall X1:term, auto__q1 X1 -> auto__q1 (s X1)
  | trans__q1_s_2 : forall X1:term, auto__q2 X1 -> auto__q1 (s X1)
  | trans__q1_nil_1 : auto__q1 nil
  | trans__q1_bob_1 : auto__q1 bob
  | trans__q1_cons_1 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 (cons X1 X2)
  | trans__q1_intruder_1 : auto__q1 intruder
  | trans__q1_key_1 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 (key X1 X2)
  | trans__q1_key_2 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 (key X1 X2)
  | trans__q1_key_3 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (key X1 X2)
  | trans__q1_server_1 : auto__q1 server
  | trans__q1_alice_1 : auto__q1 alice
  | trans__q1_nonceb_current_1 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 (nonceb_current X1 X2 X3 X4)
  | trans__q1_nonceb_current_2 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 (nonceb_current X1 X2 X3 X4)
  | trans__q1_nonceb_current_3 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 (nonceb_current X1 X2 X3 X4)
  | trans__q1_nonceb_current_4 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 (nonceb_current X1 X2 X3 X4)
  | trans__q1_nonceb_current_5 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 (nonceb_current X1 X2 X3 X4)
  | trans__q1_nonceb_current_6 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 (nonceb_current X1 X2 X3 X4)
  | trans__q1_nonceb_current_7 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 (nonceb_current X1 X2 X3 X4)
  | trans__q1_nonceb_current_8 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 (nonceb_current X1 X2 X3 X4)
  | trans__q1_nonceb_current_9 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 (nonceb_current X1 X2 X3 X4)
  | trans__q1_nonceb_current_10 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 (nonceb_current X1 X2 X3 X4)
  | trans__q1_nonceb_current_11 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 (nonceb_current X1 X2 X3 X4)
  | trans__q1_nonceb_current_12 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 (nonceb_current X1 X2 X3 X4)
  | trans__q1_nonceb_current_13 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 (nonceb_current X1 X2 X3 X4)
  | trans__q1_pub_1 : auto__q1 pub
  | trans__q1_nonceb_old_1 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_2 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_3 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_4 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_5 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_6 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_7 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_8 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_9 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_10 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_11 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_12 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_13 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_14 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_15 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_16 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_17 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_18 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_19 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_20 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_21 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_22 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_23 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_24 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_25 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_26 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_27 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_28 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_29 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_30 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_31 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_32 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_33 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_34 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_35 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_36 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_37 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_38 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_39 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_40 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_41 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_42 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_43 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
  | trans__q1_nonceb_old_44 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 (nonceb_old X1 X2 X3 X4)
with auto_knows_old : term -> Prop :=
    trans_knows_old_noncea_old_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_2 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_6 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_8 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_9 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_10 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_11 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_12 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_13 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_14 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_15 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_16 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_17 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_18 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_19 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_20 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_21 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_23 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_24 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_25 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_26 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_noncea_old_27 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3)
  | trans_knows_old_crypt_1 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_2 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_3 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_4 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_5 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_6 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_noncea_current_1 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (noncea_current X1 X2 X3)
  | trans_knows_old_noncea_current_2 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (noncea_current X1 X2 X3)
  | trans_knows_old_noncea_current_3 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (noncea_current X1 X2 X3)
  | trans_knows_old_noncea_current_4 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (noncea_current X1 X2 X3)
  | trans_knows_old_noncea_current_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (noncea_current X1 X2 X3)
  | trans_knows_old_noncea_current_6 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (noncea_current X1 X2 X3)
  | trans_knows_old_noncea_current_7 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (noncea_current X1 X2 X3)
  | trans_knows_old_noncea_current_8 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (noncea_current X1 X2 X3)
  | trans_knows_old_noncea_current_9 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (noncea_current X1 X2 X3)
  | trans_knows_old_noncea_current_10 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (noncea_current X1 X2 X3)
  | trans_knows_old_noncea_current_11 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (noncea_current X1 X2 X3)
  | trans_knows_old_noncea_current_12 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (noncea_current X1 X2 X3)
  | trans_knows_old_noncea_current_13 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (noncea_current X1 X2 X3)
  | trans_knows_old_s_1 : forall X1:term, auto__q1 X1 -> auto_knows_old (s X1)
  | trans_knows_old_s_2 : forall X1:term, auto__q2 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_cons_1 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (cons X1 X2)
  | trans_knows_old_cons_2 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_old (cons X1 X2)
  | trans_knows_old_cons_3 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (cons X1 X2)
  | trans_knows_old_cons_4 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (cons X1 X2)
  | trans_knows_old_prv_1 : auto_knows_old prv
  | trans_knows_old_intruder_1 : auto_knows_old intruder
  | trans_knows_old_key_1 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_2 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_3 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_4 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_5 : forall X1 X2:term, auto__q1 X1 -> auto__q3 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__q1 X1 -> auto__q1 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_server_1 : auto_knows_old server
  | trans_knows_old_sym_1 : auto_knows_old sym
  | trans_knows_old_alice_1 : auto_knows_old alice
  | trans_knows_old_nonceb_current_1 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_2 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_3 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_4 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_5 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_6 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_7 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_8 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_9 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_10 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_11 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_12 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_13 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_14 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_15 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_16 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_17 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_18 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_19 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_20 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_21 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_22 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_23 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_24 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_25 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_26 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_27 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_28 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_nonceb_current_29 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4)
  | trans_knows_old_pub_1 : auto_knows_old pub
  | trans_knows_old_nonceb_old_1 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_2 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_3 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_4 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_5 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_6 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_7 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_8 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_9 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_10 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_11 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_12 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_13 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_14 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_15 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_16 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_17 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_18 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_19 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_20 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_21 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_22 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_23 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_24 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_25 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_26 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_27 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_28 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_29 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_30 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_31 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_32 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_33 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_34 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_35 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_36 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_37 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_38 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_39 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_40 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_41 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_42 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_43 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_44 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_45 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_46 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_47 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_48 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_49 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_50 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_51 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_52 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_53 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_54 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_55 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_56 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_57 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_58 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_59 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_60 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_61 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_62 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_63 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_64 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_65 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_66 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_67 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_68 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_69 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_70 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_71 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_72 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_73 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_74 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_75 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_76 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_77 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_78 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_79 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_80 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_nonceb_old_81 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4)
  | trans_knows_old_session_old_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_2 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_6 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_8 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_9 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_10 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_11 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_12 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_13 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_14 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_15 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_16 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_17 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_18 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_19 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_20 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_21 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_23 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_24 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_25 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_26 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3)
  | trans_knows_old_session_old_27 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3)
with auto_has_pub_key : term -> term -> Prop :=
    trans_has_pub_key_1 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_has_pub_key X1 X2
with auto_knows_current : term -> Prop :=
    trans_knows_current_noncea_old_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_2 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_6 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_8 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_9 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_10 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_11 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_12 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_13 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_14 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_15 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_16 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_17 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_18 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_19 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_20 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_21 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_23 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_24 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_25 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_26 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_noncea_old_27 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3)
  | trans_knows_current_crypt_1 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_2 : forall X1 X2:term, auto__q3 X1 -> auto__q1 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__q3 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_5 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_6 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_noncea_current_1 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_current X1 X2 X3)
  | trans_knows_current_noncea_current_2 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3)
  | trans_knows_current_noncea_current_3 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_current X1 X2 X3)
  | trans_knows_current_noncea_current_4 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_current X1 X2 X3)
  | trans_knows_current_noncea_current_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3)
  | trans_knows_current_noncea_current_6 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3)
  | trans_knows_current_noncea_current_7 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (noncea_current X1 X2 X3)
  | trans_knows_current_noncea_current_8 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_current X1 X2 X3)
  | trans_knows_current_noncea_current_9 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3)
  | trans_knows_current_noncea_current_10 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_current X1 X2 X3)
  | trans_knows_current_noncea_current_11 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_current X1 X2 X3)
  | trans_knows_current_noncea_current_12 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3)
  | trans_knows_current_noncea_current_13 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_current X1 X2 X3)
  | trans_knows_current_s_1 : forall X1:term, auto__q1 X1 -> auto_knows_current (s X1)
  | trans_knows_current_s_2 : forall X1:term, auto__q2 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_cons_1 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (cons X1 X2)
  | trans_knows_current_cons_2 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_current (cons X1 X2)
  | trans_knows_current_cons_3 : forall X1 X2:term, auto__q1 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_prv_1 : auto_knows_current prv
  | trans_knows_current_intruder_1 : auto_knows_current intruder
  | trans_knows_current_key_1 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_2 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_3 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_4 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_5 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_6 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_7 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_server_1 : auto_knows_current server
  | trans_knows_current_sym_1 : auto_knows_current sym
  | trans_knows_current_alice_1 : auto_knows_current alice
  | trans_knows_current_nonceb_current_1 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_2 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_3 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_4 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_5 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_6 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_7 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_8 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_9 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_10 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_11 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_12 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_13 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_14 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_15 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_16 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_17 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_18 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_19 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_20 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_21 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_22 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_23 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_24 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_25 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_26 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_27 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_28 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_nonceb_current_29 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4)
  | trans_knows_current_pub_1 : auto_knows_current pub
  | trans_knows_current_nonceb_old_1 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_2 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_3 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_4 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_5 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_6 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_7 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_8 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_9 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_10 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_11 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_12 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_13 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_14 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_15 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_16 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_17 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_18 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_19 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_20 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_21 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_22 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_23 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_24 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_25 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_26 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_27 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_28 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_29 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_30 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_31 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_32 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_33 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_34 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_35 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_36 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_37 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_38 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_39 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_40 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_41 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_42 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_43 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_44 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_45 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_46 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_47 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_48 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_49 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_50 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_51 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_52 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_53 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_54 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_55 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_56 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_57 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_58 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_59 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_60 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_61 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_62 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_63 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_64 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_65 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_66 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_67 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_68 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_69 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_70 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_71 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_72 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_73 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_74 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_75 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_76 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_77 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_78 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_79 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_80 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_nonceb_old_81 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)
  | trans_knows_current_session_old_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_2 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_6 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_8 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_9 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_10 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_11 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_12 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_13 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_14 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_15 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_16 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_17 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_18 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_19 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_20 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_21 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_23 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_24 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_25 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_26 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3)
  | trans_knows_current_session_old_27 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3)
with auto__q3 : term -> Prop :=
    trans__q3_crypt_1 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 (crypt X1 X2)
  | trans__q3_crypt_2 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (crypt X1 X2)
  | trans__q3_crypt_3 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 (crypt X1 X2)
  | trans__q3_noncea_current_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X2 X3)
  | trans__q3_noncea_current_2 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X2 X3)
  | trans__q3_noncea_current_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 (noncea_current X1 X2 X3)
  | trans__q3_noncea_current_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X2 X3)
  | trans__q3_noncea_current_5 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 (noncea_current X1 X2 X3)
  | trans__q3_noncea_current_6 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X2 X3)
  | trans__q3_noncea_current_7 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X2 X3)
  | trans__q3_noncea_current_8 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (noncea_current X1 X2 X3)
  | trans__q3_noncea_current_9 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 (noncea_current X1 X2 X3)
  | trans__q3_noncea_current_10 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X2 X3)
  | trans__q3_noncea_current_11 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X2 X3)
  | trans__q3_noncea_current_12 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (noncea_current X1 X2 X3)
  | trans__q3_noncea_current_13 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X2 X3)
  | trans__q3_noncea_current_14 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (noncea_current X1 X2 X3)
  | trans__q3_s_1 : forall X1:term, auto__q3 X1 -> auto__q3 (s X1)
  | trans__q3_cons_1 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 (cons X1 X2)
  | trans__q3_cons_2 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 (cons X1 X2)
  | trans__q3_cons_3 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (cons X1 X2)
  | trans__q3_cons_4 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 (cons X1 X2)
  | trans__q3_cons_5 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 (cons X1 X2)
  | trans__q3_key_1 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (key X1 X2)
  | trans__q3_key_2 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 (key X1 X2)
  | trans__q3_nonceb_current_1 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_2 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_3 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_4 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_5 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_6 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_7 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_8 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_9 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_10 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_11 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_12 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_13 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_14 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_15 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_16 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_17 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_18 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_19 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_20 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_21 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_22 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_23 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_24 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_25 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_26 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_27 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_28 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_29 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_30 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_31 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_32 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_33 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_34 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_35 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_36 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_37 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_38 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_39 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_40 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_41 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_42 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_43 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_44 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_45 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_46 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_47 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_48 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_49 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_50 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_51 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
  | trans__q3_nonceb_current_52 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 (nonceb_current X1 X2 X3 X4)
with auto__q2 : term -> Prop :=
    trans__q2_noncea_old_1 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 (noncea_old X1 X2 X3)
  | trans__q2_noncea_old_2 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 (noncea_old X1 X2 X3)
  | trans__q2_noncea_old_3 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 (noncea_old X1 X2 X3)
  | trans__q2_crypt_1 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 (crypt X1 X2)
  | trans__q2_crypt_2 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 (crypt X1 X2)
  | trans__q2_noncea_current_1 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 (noncea_current X1 X2 X3)
  | trans__q2_noncea_current_2 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X2 X3)
  | trans__q2_noncea_current_3 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 (noncea_current X1 X2 X3)
  | trans__q2_noncea_current_4 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (noncea_current X1 X2 X3)
  | trans__q2_noncea_current_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 (noncea_current X1 X2 X3)
  | trans__q2_noncea_current_6 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X2 X3)
  | trans__q2_noncea_current_7 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 (noncea_current X1 X2 X3)
  | trans__q2_noncea_current_8 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X2 X3)
  | trans__q2_noncea_current_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 (noncea_current X1 X2 X3)
  | trans__q2_noncea_current_10 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 (noncea_current X1 X2 X3)
  | trans__q2_noncea_current_11 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X2 X3)
  | trans__q2_i_1 : auto__q2 i
  | trans__q2_cons_1 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X1 X2)
  | trans__q2_cons_2 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 (cons X1 X2)
  | trans__q2_cons_3 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons X1 X2)
  | trans__q2_prv_1 : auto__q2 prv
  | trans__q2_key_1 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 (key X1 X2)
  | trans__q2_key_2 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 (key X1 X2)
  | trans__q2_key_3 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 (key X1 X2)
  | trans__q2_key_4 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key X1 X2)
  | trans__q2_sym_1 : auto__q2 sym
  | trans__q2_nonceb_current_1 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_2 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_3 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_4 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_5 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_6 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_7 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_8 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_9 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_10 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_11 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_12 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_13 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_14 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_15 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_current_16 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 (nonceb_current X1 X2 X3 X4)
  | trans__q2_nonceb_old_1 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_2 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_3 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_4 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_5 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_6 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_7 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_8 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_9 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_10 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_11 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_12 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_13 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_14 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_15 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_16 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_17 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_18 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_19 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_20 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_21 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_22 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_23 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_24 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_25 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_26 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_27 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_28 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_29 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_30 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_31 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_32 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_33 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_34 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_35 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_36 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_nonceb_old_37 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 (nonceb_old X1 X2 X3 X4)
  | trans__q2_session_old_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_2 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_6 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_8 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_9 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_10 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_11 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_12 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_13 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_14 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_15 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_16 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_17 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_18 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_19 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_20 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_21 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_23 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_24 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_25 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_26 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 (session_old X1 X2 X3)
  | trans__q2_session_old_27 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (session_old X1 X2 X3)
with auto_agent : term -> Prop :=
    trans_agent_noncea_old_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_2 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_6 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_8 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_9 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_10 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_11 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_12 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_13 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_14 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_15 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_16 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_17 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_18 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_19 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_20 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_21 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_23 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_24 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_25 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_26 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_noncea_old_27 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (noncea_old X1 X2 X3)
  | trans_agent_crypt_1 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_agent (crypt X1 X2)
  | trans_agent_crypt_2 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_agent (crypt X1 X2)
  | trans_agent_crypt_3 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_agent (crypt X1 X2)
  | trans_agent_crypt_4 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_agent (crypt X1 X2)
  | trans_agent_crypt_5 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_agent (crypt X1 X2)
  | trans_agent_crypt_6 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_agent (crypt X1 X2)
  | trans_agent_noncea_current_1 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (noncea_current X1 X2 X3)
  | trans_agent_noncea_current_2 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_agent (noncea_current X1 X2 X3)
  | trans_agent_noncea_current_3 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_agent (noncea_current X1 X2 X3)
  | trans_agent_noncea_current_4 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_agent (noncea_current X1 X2 X3)
  | trans_agent_noncea_current_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_agent (noncea_current X1 X2 X3)
  | trans_agent_noncea_current_6 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_agent (noncea_current X1 X2 X3)
  | trans_agent_noncea_current_7 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_agent (noncea_current X1 X2 X3)
  | trans_agent_noncea_current_8 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_agent (noncea_current X1 X2 X3)
  | trans_agent_noncea_current_9 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_agent (noncea_current X1 X2 X3)
  | trans_agent_noncea_current_10 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (noncea_current X1 X2 X3)
  | trans_agent_noncea_current_11 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_agent (noncea_current X1 X2 X3)
  | trans_agent_noncea_current_12 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_agent (noncea_current X1 X2 X3)
  | trans_agent_noncea_current_13 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (noncea_current X1 X2 X3)
  | trans_agent_s_1 : forall X1:term, auto__q1 X1 -> auto_agent (s X1)
  | trans_agent_s_2 : forall X1:term, auto__q2 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_cons_1 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_agent (cons X1 X2)
  | trans_agent_cons_2 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_agent (cons X1 X2)
  | trans_agent_cons_3 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_agent (cons X1 X2)
  | trans_agent_cons_4 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_agent (cons X1 X2)
  | trans_agent_prv_1 : auto_agent prv
  | trans_agent_intruder_1 : auto_agent intruder
  | trans_agent_key_1 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_agent (key X1 X2)
  | trans_agent_key_2 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_agent (key X1 X2)
  | trans_agent_key_3 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_agent (key X1 X2)
  | trans_agent_key_4 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_agent (key X1 X2)
  | trans_agent_key_5 : forall X1 X2:term, auto__q1 X1 -> auto__q3 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__q1 X1 -> auto__q1 X2 -> auto_agent (key X1 X2)
  | trans_agent_server_1 : auto_agent server
  | trans_agent_sym_1 : auto_agent sym
  | trans_agent_alice_1 : auto_agent alice
  | trans_agent_nonceb_current_1 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_2 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_3 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_4 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_5 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_6 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_7 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_8 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_9 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_10 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_11 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_12 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_13 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_14 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_15 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_16 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_17 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_18 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_19 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_20 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_21 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_22 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_23 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_24 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_25 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_26 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_27 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_28 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_nonceb_current_29 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_agent (nonceb_current X1 X2 X3 X4)
  | trans_agent_pub_1 : auto_agent pub
  | trans_agent_nonceb_old_1 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_2 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_3 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_4 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_5 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_6 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_7 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_8 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_9 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_10 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_11 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_12 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_13 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_14 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_15 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_16 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_17 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_18 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_19 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_20 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_21 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_22 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_23 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_24 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_25 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_26 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_27 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_28 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_29 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_30 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_31 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_32 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_33 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_34 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_35 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_36 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_37 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_38 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_39 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_40 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_41 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_42 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_43 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_44 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_45 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_46 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_47 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_48 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_49 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_50 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_51 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_52 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_53 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_54 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_55 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_56 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_57 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_58 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_59 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_60 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_61 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_62 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_63 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_64 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_65 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_66 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_67 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_68 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_69 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_70 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_71 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_72 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_73 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_74 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_75 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_76 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_77 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_78 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_79 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_80 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_nonceb_old_81 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_agent (nonceb_old X1 X2 X3 X4)
  | trans_agent_session_old_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_2 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_6 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_8 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_9 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_10 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_11 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_12 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_13 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_14 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_15 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_16 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_17 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_18 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_19 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_20 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_21 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_23 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_24 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_25 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_26 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_agent (session_old X1 X2 X3)
  | trans_agent_session_old_27 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (session_old X1 X2 X3)
with auto___query__intruder_knows_alice_msg : Prop :=
with auto___query__intruder_knows_bob_msg : Prop :=
.

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


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


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

Remark rem_2 : auto_agent server. (* Deduce positive atom. *)
Proof.
   case rem_1. intros. apply trans_agent_server_1;  tauto.
 tauto.
Qed.

Remark rem_3 : auto_agent alice. (* Deduce positive atom. *)
Proof.
   case rem_1. intros. apply trans_agent_alice_1;  tauto.
 tauto.
Qed.

Remark rem_4 : (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_5 : (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_4 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_6 : (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_7 : (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_6 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_8 : (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_9 : (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_8 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_10 : (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_5 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_9 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_11 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10 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_noncea_old_9;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_12 : (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_4 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_13 : (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_14 : (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_13 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_15 : (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_16 : (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_15 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_17 : (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_12 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_14 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_16 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_18 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_17 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_noncea_old_15;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_19 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_20 : (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_21 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_20 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_22 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_8 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_23 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_19 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_21 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_22 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_24 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_23 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_noncea_old_23;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. 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_25 : forall X1 X2 X3:term, auto__q2 (noncea_old X1 X2 X3) -> or_3
    (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__q3 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_3_intro_1; tauto.
  intros. apply or_3_intro_2; tauto.
  intros. apply or_3_intro_3; tauto.
Qed.

Remark rem_26 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 (noncea_old X1 X2 X3) -> auto_knows_current (noncea_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_25 X1 X2 X3 H);  intros.
  apply (rem_11 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_18 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_24 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_27 : (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_4 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_28 : (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_6 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_29 : (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_27 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_28 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_30 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 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_29 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_31 : (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_32 : (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_31 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_33 : (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_13 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_34 : (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_32 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_33 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_35 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 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_34 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  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_36 : forall X1 X2:term, auto__q2 (crypt X1 X2) -> or_2
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q1 X1 /\ auto__q3 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_37 : (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_36 X1 X2 H);  intros.
  apply (rem_30 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_35 epsilon_m_q2_pknows_current X1 X2);  tauto.
Defined.

Remark rem_38 : (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_39 : (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_38 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_40 : (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_13 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_41 : (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_42 : (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_41 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_43 : (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_39 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_40 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_42 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_44 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_43 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_noncea_current_2;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_45 : (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_38 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_46 : (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_13 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_47 : (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_15 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_48 : (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_45 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_46 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_47 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_49 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_48 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_noncea_current_3;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_50 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10 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_noncea_current_4;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_51 : (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_4 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_52 : (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_6 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_53 : (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_41 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_54 : (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_51 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_52 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_53 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_55 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_54 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_noncea_current_5;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_56 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_57 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_20 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_58 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_41 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_59 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_56 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_57 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_58 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_60 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_59 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_noncea_current_6;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_61 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_17 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_noncea_current_8;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_62 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_31 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_63 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_20 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_64 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_41 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_65 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_62 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_63 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_64 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_66 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_65 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_noncea_current_9;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_67 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_68 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_20 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_69 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_15 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_70 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_67 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_68 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_69 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_71 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_70 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_noncea_current_10;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_72 : (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_38 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_73 : (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_6 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_74 : (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_8 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_75 : (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_72 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_73 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_74 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_76 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_75 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_noncea_current_11;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_77 : (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_4 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_78 : (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_13 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_79 : (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_41 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_80 : (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_77 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_78 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_79 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_81 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_80 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_noncea_current_12;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_82 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_31 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_83 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_20 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_84 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_15 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_85 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_82 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_83 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_84 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_86 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_85 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_noncea_current_13;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. 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_87 : forall X1 X2 X3:term, auto__q2 (noncea_current X1 X2 X3) -> or_11
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
.
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_88 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 (noncea_current X1 X2 X3) -> auto_knows_current (noncea_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_87 X1 X2 X3 H);  intros.
  apply (rem_44 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_49 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_50 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_55 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_60 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_61 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_66 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_71 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_76 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_81 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_86 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_89 : (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_90 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current.  case (rem_89 epsilon_m_q2_pknows_current). clear  epsilon_m_q2_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m_q2_pknows_current. tauto.
Defined.

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

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

Remark rem_92 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> auto__q2 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intro H. intros.
  elim (rem_91 H);  intros.
  apply (rem_90 epsilon_m_q2_pknows_current);  tauto.
Defined.

Remark rem_93 : (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_38 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_94 : (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_20 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_95 : (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_93 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_94 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_96 : (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_95 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_97 : (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_38 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_98 : (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_6 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_99 : (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_97 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_98 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_100 : (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_99 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_101 : (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_31 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_102 : (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_6 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_103 : (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_101 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_102 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_104 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_103 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_cons_4;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_105 : forall X1 X2:term, auto__q2 (cons X1 X2) -> or_3
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q1 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_106 : (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_105 X1 X2 H);  intros.
  apply (rem_96 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_100 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_104 epsilon_m_q2_pknows_current X1 X2);  tauto.
Defined.

Remark rem_107 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> auto_knows_current prv. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current.  case (rem_89 epsilon_m_q2_pknows_current). clear  epsilon_m_q2_pknows_current. intros. apply trans_knows_current_prv_1;  tauto.
 clear  epsilon_m_q2_pknows_current. tauto.
Defined.

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

Remark rem_109 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> auto__q2 prv -> auto_knows_current prv. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intro H. intros.
  elim (rem_108 H);  intros.
  apply (rem_107 epsilon_m_q2_pknows_current);  tauto.
Defined.

Remark rem_110 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 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_95 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_111 : (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_4 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_112 : (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_13 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_113 : (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_111 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_112 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_114 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_113 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_115 : (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_29 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_key_3;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_116 : (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_31 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_117 : (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_20 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_118 : (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_116 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_117 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_119 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_118 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_key_6;  tauto.
 clear  epsilon_m_q2_pknows_current 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_120 : forall X1 X2:term, auto__q2 (key X1 X2) -> or_4
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q3 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q1 X1 /\ auto__q2 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_121 : (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_120 X1 X2 H);  intros.
  apply (rem_110 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_114 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_115 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_119 epsilon_m_q2_pknows_current X1 X2);  tauto.
Defined.

Remark rem_122 : (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_89 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_123 : auto__q2 sym -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_124 : (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_123 H);  intros.
  apply (rem_122 epsilon_m_q2_pknows_current);  tauto.
Defined.

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

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

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

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

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

Remark rem_130 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_125 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_126 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_127 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_129 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

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

Remark rem_137 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_132 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_133 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_134 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_136 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_138 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_137 epsilon_m_q2_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_5;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

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

Remark rem_144 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_139 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_140 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_141 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_143 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_150 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_146 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_147 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_148 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_149 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_151 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_150 epsilon_m_q2_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_8;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_156 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_152 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_153 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_154 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_155 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_157 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_156 epsilon_m_q2_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_10;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_162 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_158 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_159 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_160 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_161 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_168 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_164 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_165 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_166 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_167 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_169 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_168 epsilon_m_q2_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_13;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_174 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_170 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_171 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_172 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_173 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_175 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_174 epsilon_m_q2_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_14;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

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

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

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

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

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

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

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

Remark rem_187 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_186 epsilon_m_q2_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_20;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_192 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_188 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_189 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_190 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_191 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_198 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_194 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_195 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_196 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_197 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_199 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_198 epsilon_m_q2_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_24;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_204 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_200 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_201 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_202 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_203 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_210 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_206 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_207 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_208 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_209 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_216 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_212 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_213 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_214 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_215 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_222 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_218 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_219 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_220 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_221 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_223 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_222 epsilon_m_q2_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_29;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. tauto.
Defined.

Inductive or_16(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16:Prop) : Prop :=
    or_16_intro_1 : H1 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_2 : H2 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_3 : H3 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_4 : H4 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_5 : H5 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_6 : H6 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_7 : H7 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_8 : H8 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_9 : H9 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_10 : H10 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_11 : H11 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_12 : H12 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_13 : H13 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_14 : H14 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_15 : H15 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
  | or_16_intro_16 : H16 -> (or_16 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16)
.

Remark rem_224 : forall X1 X2 X3 X4:term, auto__q2 (nonceb_current X1 X2 X3 X4) -> or_16
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
.
Proof.
  intros. inversion H.
  intros. apply or_16_intro_1; tauto.
  intros. apply or_16_intro_2; tauto.
  intros. apply or_16_intro_3; tauto.
  intros. apply or_16_intro_4; tauto.
  intros. apply or_16_intro_5; tauto.
  intros. apply or_16_intro_6; tauto.
  intros. apply or_16_intro_7; tauto.
  intros. apply or_16_intro_8; tauto.
  intros. apply or_16_intro_9; tauto.
  intros. apply or_16_intro_10; tauto.
  intros. apply or_16_intro_11; tauto.
  intros. apply or_16_intro_12; tauto.
  intros. apply or_16_intro_13; tauto.
  intros. apply or_16_intro_14; tauto.
  intros. apply or_16_intro_15; tauto.
  intros. apply or_16_intro_16; tauto.
Qed.

Remark rem_225 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 (nonceb_current X1 X2 X3 X4) -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_224 X1 X2 X3 X4 H);  intros.
  apply (rem_131 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_138 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_145 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_151 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_157 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_163 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_169 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_175 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_181 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_187 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_193 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_199 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_205 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_211 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_217 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_223 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
Defined.

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

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

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

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

Remark rem_230 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_226 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_227 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_228 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_229 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

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

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

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

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

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

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

Remark rem_242 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_238 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_239 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_240 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_241 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_243 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_242 epsilon_m_q2_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_3;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

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

Remark rem_249 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_245 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_246 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_247 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_248 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_255 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_251 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_252 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_253 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_254 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

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

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

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

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

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

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

Remark rem_267 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_263 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_264 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_265 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_266 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

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

Remark rem_274 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_270 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_271 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_272 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_273 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_280 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_276 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_277 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_278 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_279 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

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

Remark rem_287 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_283 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_284 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_285 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_286 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_293 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_289 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_290 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_291 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_292 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_299 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_295 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_296 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_297 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_298 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

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

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

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

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

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

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

Remark rem_311 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_307 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_308 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_309 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_310 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_317 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_313 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_314 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_315 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_316 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_323 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_319 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_320 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_321 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_322 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_329 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_325 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_326 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_327 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_328 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_335 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_331 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_332 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_333 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_334 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_341 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_337 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_338 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_339 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_340 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_347 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_343 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_344 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_345 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_346 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_353 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_349 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_350 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_351 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_352 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_359 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_355 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_356 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_357 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_358 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_365 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_361 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_362 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_363 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_364 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

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

Remark rem_372 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_368 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_369 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_370 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_371 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Remark rem_390 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_386 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_387 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_388 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_389 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

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

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

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

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

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

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

Remark rem_402 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_398 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_399 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_400 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_401 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_408 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_404 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_405 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_406 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_407 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_414 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_410 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_411 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_412 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_413 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

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

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

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

Remark rem_420 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_416 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_417 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_418 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_419 epsilon_m_q2_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

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

Inductive or_37(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:Prop) : Prop :=
    or_37_intro_1 : H1 -> (or_37 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)
  | or_37_intro_2 : H2 -> (or_37 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)
  | or_37_intro_3 : H3 -> (or_37 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)
  | or_37_intro_4 : H4 -> (or_37 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)
  | or_37_intro_5 : H5 -> (or_37 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)
  | or_37_intro_6 : H6 -> (or_37 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)
  | or_37_intro_7 : H7 -> (or_37 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)
  | or_37_intro_8 : H8 -> (or_37 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)
  | or_37_intro_9 : H9 -> (or_37 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)
  | or_37_intro_10 : H10 -> (or_37 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)
  | or_37_intro_11 : H11 -> (or_37 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)
  | or_37_intro_12 : H12 -> (or_37 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)
  | or_37_intro_13 : H13 -> (or_37 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)
  | or_37_intro_14 : H14 -> (or_37 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)
  | or_37_intro_15 : H15 -> (or_37 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)
  | or_37_intro_16 : H16 -> (or_37 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)
  | or_37_intro_17 : H17 -> (or_37 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)
  | or_37_intro_18 : H18 -> (or_37 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)
  | or_37_intro_19 : H19 -> (or_37 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)
  | or_37_intro_20 : H20 -> (or_37 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)
  | or_37_intro_21 : H21 -> (or_37 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)
  | or_37_intro_22 : H22 -> (or_37 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)
  | or_37_intro_23 : H23 -> (or_37 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)
  | or_37_intro_24 : H24 -> (or_37 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)
  | or_37_intro_25 : H25 -> (or_37 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)
  | or_37_intro_26 : H26 -> (or_37 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)
  | or_37_intro_27 : H27 -> (or_37 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)
  | or_37_intro_28 : H28 -> (or_37 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)
  | or_37_intro_29 : H29 -> (or_37 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)
  | or_37_intro_30 : H30 -> (or_37 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)
  | or_37_intro_31 : H31 -> (or_37 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)
  | or_37_intro_32 : H32 -> (or_37 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)
  | or_37_intro_33 : H33 -> (or_37 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)
  | or_37_intro_34 : H34 -> (or_37 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)
  | or_37_intro_35 : H35 -> (or_37 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)
  | or_37_intro_36 : H36 -> (or_37 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)
  | or_37_intro_37 : H37 -> (or_37 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)
.

Remark rem_423 : forall X1 X2 X3 X4:term, auto__q2 (nonceb_old X1 X2 X3 X4) -> or_37
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
.
Proof.
  intros. inversion H.
  intros. apply or_37_intro_1; tauto.
  intros. apply or_37_intro_2; tauto.
  intros. apply or_37_intro_3; tauto.
  intros. apply or_37_intro_4; tauto.
  intros. apply or_37_intro_5; tauto.
  intros. apply or_37_intro_6; tauto.
  intros. apply or_37_intro_7; tauto.
  intros. apply or_37_intro_8; tauto.
  intros. apply or_37_intro_9; tauto.
  intros. apply or_37_intro_10; tauto.
  intros. apply or_37_intro_11; tauto.
  intros. apply or_37_intro_12; tauto.
  intros. apply or_37_intro_13; tauto.
  intros. apply or_37_intro_14; tauto.
  intros. apply or_37_intro_15; tauto.
  intros. apply or_37_intro_16; tauto.
  intros. apply or_37_intro_17; tauto.
  intros. apply or_37_intro_18; tauto.
  intros. apply or_37_intro_19; tauto.
  intros. apply or_37_intro_20; tauto.
  intros. apply or_37_intro_21; tauto.
  intros. apply or_37_intro_22; tauto.
  intros. apply or_37_intro_23; tauto.
  intros. apply or_37_intro_24; tauto.
  intros. apply or_37_intro_25; tauto.
  intros. apply or_37_intro_26; tauto.
  intros. apply or_37_intro_27; tauto.
  intros. apply or_37_intro_28; tauto.
  intros. apply or_37_intro_29; tauto.
  intros. apply or_37_intro_30; tauto.
  intros. apply or_37_intro_31; tauto.
  intros. apply or_37_intro_32; tauto.
  intros. apply or_37_intro_33; tauto.
  intros. apply or_37_intro_34; tauto.
  intros. apply or_37_intro_35; tauto.
  intros. apply or_37_intro_36; tauto.
  intros. apply or_37_intro_37; tauto.
Qed.

Remark rem_424 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 (nonceb_old X1 X2 X3 X4) -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_423 X1 X2 X3 X4 H);  intros.
  apply (rem_231 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_237 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_243 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_244 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_250 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_256 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_262 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_268 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_269 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_275 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_281 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_282 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_288 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_294 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_300 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_306 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_312 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_318 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_324 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_330 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_336 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_342 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_348 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_354 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_360 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_366 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_367 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_373 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_379 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_385 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_391 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_397 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_403 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_409 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_415 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_421 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_422 epsilon_m_q2_pknows_current X1 X2 X3 X4);  tauto.
Defined.

Remark rem_425 : (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_31 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_426 : (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_6 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_427 : (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_15 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_428 : (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_425 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_426 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_427 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_429 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_428 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_session_old_1;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_430 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_31 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_431 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_13 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_432 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_41 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_433 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_430 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_431 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_432 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_434 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_433 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_session_old_2;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_435 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_31 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_436 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_13 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_437 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_8 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_438 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_435 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_436 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_437 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_439 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_438 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_session_old_3;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_440 : (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_38 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_441 : (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_20 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_442 : (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_41 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_443 : (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_440 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_441 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_442 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_444 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_443 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_session_old_4;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_445 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_446 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_20 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_447 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_15 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_448 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_445 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_446 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_447 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_449 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_448 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_session_old_5;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_450 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_43 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_session_old_6;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_451 : (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_38 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_452 : (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_13 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_453 : (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_8 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_454 : (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_451 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_452 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_453 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_455 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_454 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_session_old_7;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_456 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_48 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_session_old_8;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_457 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10 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_session_old_9;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_458 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_31 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_459 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_460 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_41 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_461 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_458 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_459 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_460 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_462 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_461 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_session_old_10;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_463 : (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_4 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_464 : (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_6 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_465 : (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_15 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_466 : (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_463 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_464 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_465 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_467 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_466 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_session_old_11;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_468 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_54 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_session_old_12;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_469 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_59 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_session_old_13;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_470 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_471 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_13 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_472 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_8 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_473 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_470 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_471 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_472 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_474 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_473 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_session_old_14;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_475 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_17 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_session_old_15;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_476 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_65 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_session_old_16;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_477 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_70 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_session_old_17;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_478 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_31 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_479 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_20 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_480 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_8 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_481 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_478 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_479 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_480 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_482 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_481 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_session_old_18;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_483 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_31 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_484 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_485 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_8 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_486 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_483 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_484 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_485 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_487 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_486 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_session_old_19;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_488 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_75 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_session_old_20;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_489 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_31 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_490 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_13 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_491 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_15 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_492 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_489 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_490 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_491 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_493 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_492 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_session_old_21;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_494 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_495 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_496 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_41 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_497 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_494 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_495 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_496 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_498 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_497 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_session_old_22;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_499 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_23 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_session_old_23;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_500 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_80 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_session_old_24;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_501 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_502 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_503 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_15 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_504 : (forall X:term, auto__q2 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_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_501 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_502 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_503 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_505 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_504 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_session_old_25;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_506 : (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_38 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_507 : (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_20 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_508 : (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_8 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_509 : (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_506 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_507 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_508 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_510 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_509 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_session_old_26;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_511 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_85 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_session_old_27;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Inductive or_27(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:Prop) : Prop :=
    or_27_intro_1 : H1 -> (or_27 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)
  | or_27_intro_2 : H2 -> (or_27 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)
  | or_27_intro_3 : H3 -> (or_27 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)
  | or_27_intro_4 : H4 -> (or_27 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)
  | or_27_intro_5 : H5 -> (or_27 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)
  | or_27_intro_6 : H6 -> (or_27 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)
  | or_27_intro_7 : H7 -> (or_27 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)
  | or_27_intro_8 : H8 -> (or_27 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)
  | or_27_intro_9 : H9 -> (or_27 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)
  | or_27_intro_10 : H10 -> (or_27 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)
  | or_27_intro_11 : H11 -> (or_27 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)
  | or_27_intro_12 : H12 -> (or_27 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)
  | or_27_intro_13 : H13 -> (or_27 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)
  | or_27_intro_14 : H14 -> (or_27 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)
  | or_27_intro_15 : H15 -> (or_27 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)
  | or_27_intro_16 : H16 -> (or_27 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)
  | or_27_intro_17 : H17 -> (or_27 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)
  | or_27_intro_18 : H18 -> (or_27 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)
  | or_27_intro_19 : H19 -> (or_27 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)
  | or_27_intro_20 : H20 -> (or_27 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)
  | or_27_intro_21 : H21 -> (or_27 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)
  | or_27_intro_22 : H22 -> (or_27 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)
  | or_27_intro_23 : H23 -> (or_27 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)
  | or_27_intro_24 : H24 -> (or_27 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)
  | or_27_intro_25 : H25 -> (or_27 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)
  | or_27_intro_26 : H26 -> (or_27 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)
  | or_27_intro_27 : H27 -> (or_27 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)
.

Remark rem_512 : forall X1 X2 X3:term, auto__q2 (session_old X1 X2 X3) -> or_27
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_27_intro_1; tauto.
  intros. apply or_27_intro_2; tauto.
  intros. apply or_27_intro_3; tauto.
  intros. apply or_27_intro_4; tauto.
  intros. apply or_27_intro_5; tauto.
  intros. apply or_27_intro_6; tauto.
  intros. apply or_27_intro_7; tauto.
  intros. apply or_27_intro_8; tauto.
  intros. apply or_27_intro_9; tauto.
  intros. apply or_27_intro_10; tauto.
  intros. apply or_27_intro_11; tauto.
  intros. apply or_27_intro_12; tauto.
  intros. apply or_27_intro_13; tauto.
  intros. apply or_27_intro_14; tauto.
  intros. apply or_27_intro_15; tauto.
  intros. apply or_27_intro_16; tauto.
  intros. apply or_27_intro_17; tauto.
  intros. apply or_27_intro_18; tauto.
  intros. apply or_27_intro_19; tauto.
  intros. apply or_27_intro_20; tauto.
  intros. apply or_27_intro_21; tauto.
  intros. apply or_27_intro_22; tauto.
  intros. apply or_27_intro_23; tauto.
  intros. apply or_27_intro_24; tauto.
  intros. apply or_27_intro_25; tauto.
  intros. apply or_27_intro_26; tauto.
  intros. apply or_27_intro_27; tauto.
Qed.

Remark rem_513 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 (session_old X1 X2 X3) -> auto_knows_current (session_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_512 X1 X2 X3 H);  intros.
  apply (rem_429 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_434 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_439 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_444 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_449 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_450 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_455 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_456 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_457 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_462 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_467 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_468 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_469 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_474 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_475 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_476 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_477 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_482 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_487 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_488 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_493 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_498 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_499 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_500 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_505 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_510 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_511 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
Defined.

Inductive or_0 : Prop :=
.

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

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

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

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

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

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

Remark rem_520 : 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_518  H).
   intro H. elim (rem_516  H).
  intros X1 X2;  exact (rem_106 epsilon_m_q2_pknows_current X1 X2).
  intros X1 X2;  exact (rem_37 epsilon_m_q2_pknows_current X1 X2).
  exact (rem_92 epsilon_m_q2_pknows_current ).
  intros X1 X2;  exact (rem_121 epsilon_m_q2_pknows_current X1 X2).
   intro H. elim (rem_515  H).
  intros X1 X2 X3;  exact (rem_88 epsilon_m_q2_pknows_current X1 X2 X3).
  intros X1 X2 X3;  exact (rem_26 epsilon_m_q2_pknows_current X1 X2 X3).
  intros X1 X2 X3 X4;  exact (rem_225 epsilon_m_q2_pknows_current X1 X2 X3 X4).
  intros X1 X2 X3 X4;  exact (rem_424 epsilon_m_q2_pknows_current X1 X2 X3 X4).
  exact (rem_109 epsilon_m_q2_pknows_current ).
   intro H. elim (rem_519  H).
  intros X1. intro H. elim (rem_514 X1 H).
   intro H. elim (rem_517  H).
  intros X1 X2 X3;  exact (rem_513 epsilon_m_q2_pknows_current X1 X2 X3).
  exact (rem_124 epsilon_m_q2_pknows_current ).
Qed.

Remark rem_521 : forall X1 X2:term, auto__q2 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_520 X1).
Qed.

Remark rem_522 : (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_523 : (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_522 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_524 : (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_525 : (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_524 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_526 : (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_527 : (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_526 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_528 : (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_523 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_525 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_527 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_529 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_528 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_noncea_old_1;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_530 : (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_522 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_531 : (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_532 : (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_531 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_533 : (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_534 : (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_533 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_535 : (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_530 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_532 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_534 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_536 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_535 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_noncea_old_2;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_537 : (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_522 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_538 : (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_531 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_539 : (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_540 : (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_539 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_541 : (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_537 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_538 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_540 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_542 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_541 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_noncea_old_3;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_543 : (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_544 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_543 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_545 : (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_546 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_545 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_547 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_533 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_548 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_544 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_546 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_547 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_549 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_548 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_noncea_old_4;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_550 : (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_551 : (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_550 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_552 : (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_545 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_553 : (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_526 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_554 : (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_551 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_552 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_553 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_555 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_554 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_noncea_old_5;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_556 : (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_543 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_557 : (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_531 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_558 : (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_533 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_559 : (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_556 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_557 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_558 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_560 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_559 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_noncea_old_6;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_561 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_543 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_562 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_531 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_563 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_539 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_564 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_561 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_562 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_563 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_565 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_564 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_noncea_old_7;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_566 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_543 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_567 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_531 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_568 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_526 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_569 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_566 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_567 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_568 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_570 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_569 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_noncea_old_8;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_571 : (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_522 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_572 : (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_524 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_573 : (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_533 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_574 : (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_571 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_572 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_573 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_575 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_574 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_noncea_old_10;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_576 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_550 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_577 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_524 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_578 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_526 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_579 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_576 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_577 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_578 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_580 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_579 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_noncea_old_11;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_581 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_550 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_582 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_524 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_583 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_533 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_584 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_581 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_582 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_583 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_585 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_584 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_noncea_old_12;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_586 : (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_550 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_587 : (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_545 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_588 : (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_533 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_589 : (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_586 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_587 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_588 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_590 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_589 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_noncea_old_13;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_591 : (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_550 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_592 : (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_531 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_593 : (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_539 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_594 : (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_591 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_592 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_593 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_595 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_594 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_noncea_old_14;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_596 : (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_522 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_597 : (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_545 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_598 : (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_533 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_599 : (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_596 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_597 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_598 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_600 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_599 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_noncea_old_16;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_601 : (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_543 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_602 : (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_545 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_603 : (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_526 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_604 : (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_601 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_602 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_603 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_605 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_604 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_noncea_old_17;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_606 : (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_522 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_607 : (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_545 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_608 : (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_539 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_609 : (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_606 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_607 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_608 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_610 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_609 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_noncea_old_18;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_611 : (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_522 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_612 : (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_524 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_613 : (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_539 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_614 : (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_611 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_612 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_613 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_615 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_614 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_noncea_old_19;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_616 : (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_543 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_617 : (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_524 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_618 : (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_539 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_619 : (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_616 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_617 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_618 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_620 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_619 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_noncea_old_20;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_621 : (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_522 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_622 : (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_531 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_623 : (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_526 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_624 : (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_621 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_622 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_623 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_625 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_624 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_noncea_old_21;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_626 : (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_543 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_627 : (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_524 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_628 : (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_533 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_629 : (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_626 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_627 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_628 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_630 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_629 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_noncea_old_22;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_631 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_550 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_632 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_531 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_633 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_533 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_634 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_631 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_632 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_633 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_635 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_634 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_noncea_old_24;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_636 : (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_543 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_637 : (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_524 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_638 : (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_526 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_639 : (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_636 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_637 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_638 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_640 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_639 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_noncea_old_25;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_641 : (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_543 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_642 : (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_545 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_643 : (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_539 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_644 : (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_641 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_642 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_643 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_645 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_644 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_noncea_old_26;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_646 : (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_522 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_647 : (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_545 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_648 : (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_526 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_649 : (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_646 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_647 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_648 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_650 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_649 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_noncea_old_27;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Inductive or_24(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24:Prop) : Prop :=
    or_24_intro_1 : H1 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_2 : H2 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_3 : H3 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_4 : H4 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_5 : H5 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_6 : H6 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_7 : H7 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_8 : H8 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_9 : H9 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_10 : H10 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_11 : H11 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_12 : H12 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_13 : H13 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_14 : H14 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_15 : H15 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_16 : H16 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_17 : H17 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_18 : H18 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_19 : H19 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_20 : H20 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_21 : H21 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_22 : H22 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_23 : H23 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
  | or_24_intro_24 : H24 -> (or_24 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24)
.

Remark rem_651 : forall X1 X2 X3:term, auto__q1 (noncea_old X1 X2 X3) -> or_24
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_24_intro_1; tauto.
  intros. apply or_24_intro_2; tauto.
  intros. apply or_24_intro_3; tauto.
  intros. apply or_24_intro_4; tauto.
  intros. apply or_24_intro_5; tauto.
  intros. apply or_24_intro_6; tauto.
  intros. apply or_24_intro_7; tauto.
  intros. apply or_24_intro_8; tauto.
  intros. apply or_24_intro_9; tauto.
  intros. apply or_24_intro_10; tauto.
  intros. apply or_24_intro_11; tauto.
  intros. apply or_24_intro_12; tauto.
  intros. apply or_24_intro_13; tauto.
  intros. apply or_24_intro_14; tauto.
  intros. apply or_24_intro_15; tauto.
  intros. apply or_24_intro_16; tauto.
  intros. apply or_24_intro_17; tauto.
  intros. apply or_24_intro_18; tauto.
  intros. apply or_24_intro_19; tauto.
  intros. apply or_24_intro_20; tauto.
  intros. apply or_24_intro_21; tauto.
  intros. apply or_24_intro_22; tauto.
  intros. apply or_24_intro_23; tauto.
  intros. apply or_24_intro_24; tauto.
Qed.

Remark rem_652 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 (noncea_old X1 X2 X3) -> auto_knows_current (noncea_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_651 X1 X2 X3 H);  intros.
  apply (rem_529 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_536 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_542 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_549 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_555 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_560 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_565 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_570 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_575 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_580 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_585 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_590 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_595 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_600 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_605 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_610 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_615 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_620 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_625 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_630 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_635 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_640 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_645 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_650 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_653 : (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_543 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_654 : (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_545 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_655 : (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_653 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_654 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_656 : (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_655 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_crypt_1;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_657 : (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_543 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_658 : (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_524 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_659 : (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_657 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_658 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_660 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_659 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_661 : (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_522 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_662 : (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_545 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_663 : (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_661 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_662 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_664 : (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_663 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_665 : (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_522 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_666 : (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_524 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_667 : (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_665 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_666 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_668 : (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_667 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_669 : forall X1 X2:term, auto__q1 (crypt X1 X2) -> or_4
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q1 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_670 : (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_669 X1 X2 H);  intros.
  apply (rem_656 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_660 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_664 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_668 epsilon_m_q1_pknows_current X1 X2);  tauto.
Defined.

Remark rem_671 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_554 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_noncea_current_1;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_672 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_594 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_noncea_current_7;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_673 : forall X1 X2 X3:term, auto__q1 (noncea_current X1 X2 X3) -> or_2
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

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

Remark rem_675 : (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_522 epsilon_m_q1_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_676 : (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_675 epsilon_m_q1_pknows_current X1 A1). clear  epsilon_m_q1_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m_q1_pknows_current A1. tauto.
Defined.

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

Remark rem_678 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1:term, auto__q2 X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1. intros A1.
  case (rem_677 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_679 : forall X1:term, auto__q1 (s X1) -> or_2
    (auto__q1 X1)    (auto__q2 X1).
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_680 : (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_679 X1 H);  intros.
  apply (rem_676 epsilon_m_q1_pknows_current X1);  tauto.
  apply (rem_678 epsilon_m_q1_pknows_current X1);  tauto.
Defined.

Remark rem_681 : (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_682 : (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_681 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_683 : auto__q1 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_684 : (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_683 H);  intros.
  apply (rem_682 epsilon_m_q1_pknows_current);  tauto.
Defined.

Remark rem_685 : (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_681 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_686 : auto__q1 bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_687 : (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_686 H);  intros.
  apply (rem_685 epsilon_m_q1_pknows_current);  tauto.
Defined.

Remark rem_688 : (forall X:term, auto__q1 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_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_663 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_cons_3;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_690 : (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_689 X1 X2 H);  intros.
  apply (rem_688 epsilon_m_q1_pknows_current X1 X2);  tauto.
Defined.

Remark rem_691 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto_knows_current intruder. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current.  case (rem_681 epsilon_m_q1_pknows_current). clear  epsilon_m_q1_pknows_current. intros. apply trans_knows_current_intruder_1;  tauto.
 clear  epsilon_m_q1_pknows_current. tauto.
Defined.

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

Remark rem_693 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto__q1 intruder -> auto_knows_current intruder. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intro H. intros.
  elim (rem_692 H);  intros.
  apply (rem_691 epsilon_m_q1_pknows_current);  tauto.
Defined.

Remark rem_694 : (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_550 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_695 : (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_545 epsilon_m_q1_pknows_current X2).
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 /\ 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_694 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_695 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
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_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_696 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_698 : (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_522 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_699 : (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_531 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_700 : (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_698 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_699 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_701 : (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_700 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_key_5;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_702 : (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_667 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_703 : forall X1 X2:term, auto__q1 (key X1 X2) -> or_3
    (auto__q3 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q3 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_704 : (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_703 X1 X2 H);  intros.
  apply (rem_697 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_701 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_702 epsilon_m_q1_pknows_current X1 X2);  tauto.
Defined.

Remark rem_705 : (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_681 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_706 : auto__q1 server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_707 : (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_706 H);  intros.
  apply (rem_705 epsilon_m_q1_pknows_current);  tauto.
Defined.

Remark rem_708 : (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_681 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_709 : auto__q1 alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_710 : (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_709 H);  intros.
  apply (rem_708 epsilon_m_q1_pknows_current);  tauto.
Defined.

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

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

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

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

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

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

Remark rem_717 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_716 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_1;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

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

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

Remark rem_724 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_723 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_3;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

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

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

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

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

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

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

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

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

Remark rem_737 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_736 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_6;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

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

Remark rem_743 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_742 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_9;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

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

Remark rem_749 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_748 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_12;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

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

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

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

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

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

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

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

Remark rem_761 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_760 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_17;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

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

Remark rem_767 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_766 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_18;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

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

Remark rem_773 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_772 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_19;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

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

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

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

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

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

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

Remark rem_784 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_780 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_781 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_782 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_783 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_785 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_784 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_23;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

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

Remark rem_791 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_790 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_25;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
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_792 : forall X1 X2 X3 X4:term, auto__q1 (nonceb_current X1 X2 X3 X4) -> or_13
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
.
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_793 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 (nonceb_current X1 X2 X3 X4) -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_792 X1 X2 X3 X4 H);  intros.
  apply (rem_717 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_724 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_731 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_737 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_743 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_749 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_755 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_761 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_767 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_773 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_779 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_785 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_791 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
Defined.

Remark rem_794 : (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_681 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_795 : auto__q1 pub -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_796 : (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_795 H);  intros.
  apply (rem_794 epsilon_m_q1_pknows_current);  tauto.
Defined.

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

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

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

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

Remark rem_801 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_797 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_798 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_799 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_800 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_802 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_801 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_5;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_803 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_723 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_6;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_808 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_804 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_805 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_806 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_807 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_809 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_808 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_7;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_814 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_810 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_811 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_812 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_813 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_815 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_814 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_8;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_820 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_816 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_817 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_818 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_819 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_821 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_820 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_10;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_822 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_730 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_12;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_827 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_823 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_824 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_825 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_826 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_828 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_827 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_13;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_833 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_829 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_830 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_831 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_832 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_834 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_833 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_14;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_835 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_736 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_18;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_840 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_836 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_837 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_838 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_839 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_841 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_840 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_23;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_846 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_842 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_843 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_844 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_845 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_847 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_846 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_26;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_848 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_742 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_27;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_853 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_849 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_850 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_851 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_852 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_854 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_853 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_29;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_859 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_855 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_856 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_857 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_858 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_860 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_859 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_30;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_865 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_861 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_862 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_863 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_864 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_866 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_865 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_31;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_871 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_867 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_868 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_869 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_870 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_872 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_871 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_32;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_877 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_873 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_874 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_875 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_876 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_878 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_877 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_33;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_883 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_879 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_880 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_881 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_882 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_884 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_883 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_34;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_885 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_748 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_35;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_890 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_886 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_887 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_888 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_889 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_891 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_890 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_36;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_896 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_892 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_893 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_894 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_895 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_897 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_896 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_38;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_902 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_898 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_899 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_900 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_901 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_903 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_902 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_39;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_908 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_904 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_905 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_906 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_907 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_909 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_908 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_40;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_914 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_910 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_911 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_912 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_913 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_915 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_914 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_41;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_920 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_916 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_917 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_918 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_919 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_921 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_920 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_43;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_926 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_922 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_923 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_924 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_925 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_927 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_926 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_44;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_932 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_928 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_929 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_930 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_931 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_933 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_932 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_47;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_938 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_934 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_935 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_936 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_937 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_939 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_938 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_48;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_944 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_940 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_941 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_942 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_943 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_945 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_944 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_51;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_950 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_946 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_947 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_948 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_949 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_951 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_950 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_53;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_952 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_766 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_55;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_953 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_772 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_56;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_958 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_954 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_955 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_956 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_957 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_959 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_958 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_57;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_964 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_960 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_961 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_962 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_963 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_965 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_964 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_58;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_966 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_778 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_59;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_971 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_967 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_968 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_969 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_970 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

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

Remark rem_973 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_784 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_62;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_978 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_974 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_975 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_976 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_977 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_979 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_978 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_65;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_984 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_980 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_981 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_982 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_983 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_985 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_984 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_66;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_986 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_790 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_69;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_991 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_987 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_988 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_989 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_990 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_992 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_991 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_72;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_997 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_993 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_994 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_995 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_996 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_998 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_997 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_74;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_1003 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_999 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1000 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1001 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_1002 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_1004 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_1003 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_75;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

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

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

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

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

Remark rem_1009 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_1005 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1006 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1007 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_1008 epsilon_m_q1_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_1010 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_1009 epsilon_m_q1_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_80;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3 A4. tauto.
Defined.

Inductive or_44(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:Prop) : Prop :=
    or_44_intro_1 : H1 -> (or_44 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)
  | or_44_intro_2 : H2 -> (or_44 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)
  | or_44_intro_3 : H3 -> (or_44 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)
  | or_44_intro_4 : H4 -> (or_44 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)
  | or_44_intro_5 : H5 -> (or_44 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)
  | or_44_intro_6 : H6 -> (or_44 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)
  | or_44_intro_7 : H7 -> (or_44 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)
  | or_44_intro_8 : H8 -> (or_44 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)
  | or_44_intro_9 : H9 -> (or_44 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)
  | or_44_intro_10 : H10 -> (or_44 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)
  | or_44_intro_11 : H11 -> (or_44 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)
  | or_44_intro_12 : H12 -> (or_44 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)
  | or_44_intro_13 : H13 -> (or_44 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)
  | or_44_intro_14 : H14 -> (or_44 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)
  | or_44_intro_15 : H15 -> (or_44 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)
  | or_44_intro_16 : H16 -> (or_44 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)
  | or_44_intro_17 : H17 -> (or_44 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)
  | or_44_intro_18 : H18 -> (or_44 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)
  | or_44_intro_19 : H19 -> (or_44 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)
  | or_44_intro_20 : H20 -> (or_44 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)
  | or_44_intro_21 : H21 -> (or_44 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)
  | or_44_intro_22 : H22 -> (or_44 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)
  | or_44_intro_23 : H23 -> (or_44 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)
  | or_44_intro_24 : H24 -> (or_44 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)
  | or_44_intro_25 : H25 -> (or_44 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)
  | or_44_intro_26 : H26 -> (or_44 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)
  | or_44_intro_27 : H27 -> (or_44 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)
  | or_44_intro_28 : H28 -> (or_44 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)
  | or_44_intro_29 : H29 -> (or_44 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)
  | or_44_intro_30 : H30 -> (or_44 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)
  | or_44_intro_31 : H31 -> (or_44 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)
  | or_44_intro_32 : H32 -> (or_44 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)
  | or_44_intro_33 : H33 -> (or_44 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)
  | or_44_intro_34 : H34 -> (or_44 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)
  | or_44_intro_35 : H35 -> (or_44 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)
  | or_44_intro_36 : H36 -> (or_44 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)
  | or_44_intro_37 : H37 -> (or_44 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)
  | or_44_intro_38 : H38 -> (or_44 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)
  | or_44_intro_39 : H39 -> (or_44 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)
  | or_44_intro_40 : H40 -> (or_44 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)
  | or_44_intro_41 : H41 -> (or_44 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)
  | or_44_intro_42 : H42 -> (or_44 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)
  | or_44_intro_43 : H43 -> (or_44 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)
  | or_44_intro_44 : H44 -> (or_44 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)
.

Remark rem_1011 : forall X1 X2 X3 X4:term, auto__q1 (nonceb_old X1 X2 X3 X4) -> or_44
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
.
Proof.
  intros. inversion H.
  intros. apply or_44_intro_1; tauto.
  intros. apply or_44_intro_2; tauto.
  intros. apply or_44_intro_3; tauto.
  intros. apply or_44_intro_4; tauto.
  intros. apply or_44_intro_5; tauto.
  intros. apply or_44_intro_6; tauto.
  intros. apply or_44_intro_7; tauto.
  intros. apply or_44_intro_8; tauto.
  intros. apply or_44_intro_9; tauto.
  intros. apply or_44_intro_10; tauto.
  intros. apply or_44_intro_11; tauto.
  intros. apply or_44_intro_12; tauto.
  intros. apply or_44_intro_13; tauto.
  intros. apply or_44_intro_14; tauto.
  intros. apply or_44_intro_15; tauto.
  intros. apply or_44_intro_16; tauto.
  intros. apply or_44_intro_17; tauto.
  intros. apply or_44_intro_18; tauto.
  intros. apply or_44_intro_19; tauto.
  intros. apply or_44_intro_20; tauto.
  intros. apply or_44_intro_21; tauto.
  intros. apply or_44_intro_22; tauto.
  intros. apply or_44_intro_23; tauto.
  intros. apply or_44_intro_24; tauto.
  intros. apply or_44_intro_25; tauto.
  intros. apply or_44_intro_26; tauto.
  intros. apply or_44_intro_27; tauto.
  intros. apply or_44_intro_28; tauto.
  intros. apply or_44_intro_29; tauto.
  intros. apply or_44_intro_30; tauto.
  intros. apply or_44_intro_31; tauto.
  intros. apply or_44_intro_32; tauto.
  intros. apply or_44_intro_33; tauto.
  intros. apply or_44_intro_34; tauto.
  intros. apply or_44_intro_35; tauto.
  intros. apply or_44_intro_36; tauto.
  intros. apply or_44_intro_37; tauto.
  intros. apply or_44_intro_38; tauto.
  intros. apply or_44_intro_39; tauto.
  intros. apply or_44_intro_40; tauto.
  intros. apply or_44_intro_41; tauto.
  intros. apply or_44_intro_42; tauto.
  intros. apply or_44_intro_43; tauto.
  intros. apply or_44_intro_44; tauto.
Qed.

Remark rem_1012 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 (nonceb_old X1 X2 X3 X4) -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1011 X1 X2 X3 X4 H);  intros.
  apply (rem_802 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_803 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_809 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_815 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_821 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_822 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_828 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_834 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_835 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_841 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_847 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_848 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_854 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_860 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_866 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_872 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_878 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_884 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_885 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_891 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_897 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_903 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_909 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_915 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_921 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_927 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_933 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_939 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_945 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_951 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_952 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_953 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_959 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_965 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_966 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_972 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_973 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_979 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_985 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_986 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_992 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_998 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_1004 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_1010 epsilon_m_q1_pknows_current X1 X2 X3 X4);  tauto.
Defined.

Remark rem_1013 : auto__q1 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1014 : auto__q1 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1015 : auto__q1 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1017 : 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_710 epsilon_m_q1_pknows_current ).
  exact (rem_687 epsilon_m_q1_pknows_current ).
  intros X1 X2;  exact (rem_690 epsilon_m_q1_pknows_current X1 X2).
  intros X1 X2;  exact (rem_670 epsilon_m_q1_pknows_current X1 X2).
   intro H. elim (rem_1013  H).
  intros X1 X2;  exact (rem_704 epsilon_m_q1_pknows_current X1 X2).
  exact (rem_684 epsilon_m_q1_pknows_current ).
  intros X1 X2 X3;  exact (rem_674 epsilon_m_q1_pknows_current X1 X2 X3).
  intros X1 X2 X3;  exact (rem_652 epsilon_m_q1_pknows_current X1 X2 X3).
  intros X1 X2 X3 X4;  exact (rem_793 epsilon_m_q1_pknows_current X1 X2 X3 X4).
  intros X1 X2 X3 X4;  exact (rem_1012 epsilon_m_q1_pknows_current X1 X2 X3 X4).
   intro H. elim (rem_1014  H).
  exact (rem_796 epsilon_m_q1_pknows_current ).
  intros X1;  exact (rem_680 epsilon_m_q1_pknows_current X1).
  exact (rem_707 epsilon_m_q1_pknows_current ).
  intros X1 X2 X3. intro H. elim (rem_1016 X1 X2 X3 H).
   intro H. elim (rem_1015  H).
Qed.

Remark rem_1018 : 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_1017 X1).
Qed.

Remark rem_1019 : 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_1018 X1 X2).
Qed.

Remark rem_1020 : 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_520 X1).
Qed.

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

Remark rem_1022 : forall X1 X2:term, auto_knows_current (cons X1 X2) -> or_4
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q1 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_1023 : 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_1022 X2 X1 H);  intros.
  apply (rem_521 X1 X2);  tauto.
  apply (rem_1019 X1 X2);  tauto.
  apply (rem_1020 X1 X2);  tauto.
  apply (rem_1021 X1 X2);  tauto.
Qed.

Remark rem_1024 : 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_1023 X1 X2).
Qed.

Remark rem_1025 : auto__q2 server -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_517 H);  intros.
Qed.

Remark rem_1026 : auto__q2 prv -> auto__q2 server -> False. (* Split. *)
Proof.
 
  cut (auto__q2 server -> False). tauto.
  exact rem_1025.
Qed.

Remark rem_1027 : auto__q3 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1028 : auto__q3 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1027 H);  intros.
Qed.

Remark rem_1029 : auto__q3 prv -> auto__q3 server -> False. (* Split. *)
Proof.
 
  cut (auto__q3 prv -> False). tauto.
  exact rem_1028.
Qed.

Remark rem_1030 : auto__q1 server -> auto__q3 prv -> False. (* Split. *)
Proof.
 
  cut (auto__q3 prv -> False). tauto.
  exact rem_1028.
Qed.

Remark rem_1031 : auto__q3 prv -> auto__q1 server -> False. (* Prove equivalent, normalized clause. *)
Proof.
  
  cut (auto__q1 server -> auto__q3 prv -> False). tauto. exact (rem_1030).
Qed.

Remark rem_1032 : auto__q1 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1014 H);  intros.
Qed.

Remark rem_1033 : auto__q1 prv -> auto__q2 server -> False. (* Split. *)
Proof.
 
  cut (auto__q1 prv -> False). tauto.
  exact rem_1032.
Qed.

Remark rem_1034 : auto__q2 (key prv server) -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_120 prv server H);  intros.
  apply rem_1026;  tauto.
  apply rem_1029;  tauto.
  apply rem_1031;  tauto.
  apply rem_1033;  tauto.
Qed.

Remark rem_1035 : forall X1 X2 X3 X4:term, auto__q2 (cons X2 (cons X3 nil)) -> auto__q2 (key prv server) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (key prv server) -> False). tauto.
  exact (rem_1034).
Qed.

Remark rem_1036 : auto__q2 server -> auto__q3 prv -> False. (* Split. *)
Proof.
 
  cut (auto__q3 prv -> False). tauto.
  exact rem_1028.
Qed.

Remark rem_1037 : auto__q3 prv -> auto__q2 server -> False. (* Prove equivalent, normalized clause. *)
Proof.
  
  cut (auto__q2 server -> auto__q3 prv -> False). tauto. exact (rem_1036).
Qed.

Remark rem_1038 : auto__q1 prv -> auto__q3 server -> False. (* Split. *)
Proof.
 
  cut (auto__q1 prv -> False). tauto.
  exact rem_1032.
Qed.

Remark rem_1039 : auto__q1 prv -> auto__q1 server -> False. (* Split. *)
Proof.
 
  cut (auto__q1 prv -> False). tauto.
  exact rem_1032.
Qed.

Remark rem_1040 : auto__q1 (key prv server) -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_703 prv server H);  intros.
  apply rem_1037;  tauto.
  apply rem_1038;  tauto.
  apply rem_1039;  tauto.
Qed.

Remark rem_1041 : forall X1 X2 X3 X4:term, auto__q1 (key prv server) -> auto__q3 (cons X2 (cons X3 nil)) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> False). tauto.
  exact (rem_1040).
Qed.

Remark rem_1042 : forall X1 X2 X3 X4:term, auto__q3 (cons X2 (cons X3 nil)) -> auto__q1 (key prv server) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> auto__q3 (cons X2 (cons X3 nil)) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1041 X1 X2 X3 X4).
Qed.

Remark rem_1043 : forall X1 X2 X3 X4:term, auto__q1 (key prv server) -> auto__q2 (cons X2 (cons X3 nil)) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> False). tauto.
  exact (rem_1040).
Qed.

Remark rem_1044 : forall X1 X2 X3 X4:term, auto__q2 (cons X2 (cons X3 nil)) -> auto__q1 (key prv server) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> auto__q2 (cons X2 (cons X3 nil)) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1043 X1 X2 X3 X4).
Qed.

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

Remark rem_1046 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

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

Remark rem_1048 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1049 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1046 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1048 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1050 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1049 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1051 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1050 X1 X2 X3 X4).
Qed.

Remark rem_1052 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1053 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1054 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1052 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1053 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1055 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1054 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1056 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1055 X1 X2 X3 X4).
Qed.

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

Remark rem_1058 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1059 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1060 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1058 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1059 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1061 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1060 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1062 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1061 X1 X2 X3 X4).
Qed.

Remark rem_1063 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_1051 X1 X2 X3 X4);  tauto.
  apply (rem_1056 X1 X2 X3 X4);  tauto.
  apply (rem_1062 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1064 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1063 X1 X2 X3 X4).
Qed.

Remark rem_1065 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1066 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1067 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1065 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1066 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1068 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1067 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1069 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1068 X1 X2 X3 X4).
Qed.

Remark rem_1070 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1069 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1071 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1070 X1 X2 X3 X4).
Qed.

Remark rem_1072 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (key pub X3) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1073 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (key pub X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1074 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (key pub X3) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1072 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1073 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1075 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (key pub X3) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1074 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1076 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (key pub X3) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1075 X1 X2 X3 X4).
Qed.

Remark rem_1077 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1076 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1078 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1077 X1 X2 X3 X4).
Qed.

Remark rem_1079 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 (noncea_current X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_1064 X1 X2 X3 X4);  tauto.
  apply (rem_1071 X1 X2 X3 X4);  tauto.
  apply (rem_1078 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1080 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1079 X1 X2 X3 X4).
Qed.

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

Remark rem_1082 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1083 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1084 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1082 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1083 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1085 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1084 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1086 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1085 X1 X2 X3 X4).
Qed.

Remark rem_1087 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1088 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1089 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1087 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1088 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1090 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1089 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1091 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1090 X1 X2 X3 X4).
Qed.

Remark rem_1092 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1093 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1094 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1092 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1093 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1095 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1094 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1096 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1095 X1 X2 X3 X4).
Qed.

Remark rem_1097 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1098 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1099 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1097 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1098 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1100 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1099 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1101 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1100 X1 X2 X3 X4).
Qed.

Remark rem_1102 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1103 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1104 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1102 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1103 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1105 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1104 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1106 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1105 X1 X2 X3 X4).
Qed.

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

Remark rem_1107 : forall X1 X2:term, auto__q3 (cons X1 X2) -> or_5
    (auto__q3 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q2 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q3 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_5_intro_1; tauto.
  intros. apply or_5_intro_2; tauto.
  intros. apply or_5_intro_3; tauto.
  intros. apply or_5_intro_4; tauto.
  intros. apply or_5_intro_5; tauto.
Qed.

Remark rem_1108 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X4 nil) H);  intros.
  apply (rem_1086 X1 X2 X3 X4);  tauto.
  apply (rem_1091 X1 X2 X3 X4);  tauto.
  apply (rem_1096 X1 X2 X3 X4);  tauto.
  apply (rem_1101 X1 X2 X3 X4);  tauto.
  apply (rem_1106 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1109 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1108 X1 X2 X3 X4).
Qed.

Remark rem_1110 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1111 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1112 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1110 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1111 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1113 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1112 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1114 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1113 X1 X2 X3 X4).
Qed.

Remark rem_1115 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1114 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1116 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X3 X4 X2) -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1115 X1 X2 X3 X4).
Qed.

Inductive model_1 : Set := und_1:model_1 | val_1_1:model_1 | val_1_2:model_1 | val_1_3:model_1.

Fixpoint seval_1 (t : term) {struct t} : model_1 :=
  match t  with
    (noncea_old X1 X2 X3) => 
    match (seval_1 X1),(seval_1 X2),(seval_1 X3) with
      val_1_3,val_1_1,val_1_1 => val_1_3
    | val_1_2,val_1_2,val_1_3 => val_1_3
    | val_1_2,val_1_3,val_1_1 => val_1_3
    | val_1_2,val_1_1,val_1_2 => val_1_3
    | val_1_1,val_1_3,val_1_1 => val_1_2
    | val_1_2,val_1_1,val_1_3 => val_1_3
    | val_1_2,val_1_2,val_1_2 => val_1_3
    | val_1_3,val_1_3,val_1_1 => val_1_3
    | val_1_2,val_1_1,val_1_1 => val_1_3
    | val_1_1,val_1_1,val_1_3 => val_1_3
    | val_1_1,val_1_2,val_1_1 => val_1_2
    | val_1_1,val_1_1,val_1_2 => val_1_2
    | val_1_3,val_1_1,val_1_2 => val_1_3
    | val_1_3,val_1_2,val_1_1 => val_1_3
    | val_1_1,val_1_2,val_1_3 => val_1_3
    | val_1_1,val_1_2,val_1_2 => val_1_3
    | val_1_2,val_1_3,val_1_3 => val_1_3
    | val_1_3,val_1_2,val_1_3 => val_1_3
    | val_1_3,val_1_3,val_1_3 => val_1_3
    | val_1_3,val_1_1,val_1_3 => val_1_3
    | val_1_2,val_1_3,val_1_2 => val_1_3
    | val_1_1,val_1_3,val_1_2 => val_1_3
    | val_1_1,val_1_1,val_1_1 => val_1_3
    | val_1_2,val_1_2,val_1_1 => val_1_3
    | val_1_1,val_1_3,val_1_3 => val_1_3
    | val_1_3,val_1_3,val_1_2 => val_1_3
    | val_1_3,val_1_2,val_1_2 => val_1_3
    | _,_,_ => und_1
    end
  | (crypt X1 X2) => 
    match (seval_1 X1),(seval_1 X2) with
      val_1_1,val_1_3 => val_1_2
    | val_1_1,val_1_2 => val_1_1
    | val_1_2,val_1_1 => val_1_1
    | val_1_2,val_1_2 => val_1_3
    | val_1_3,val_1_1 => 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_1
    | val_1_3,val_1_3 => val_1_3
    | _,_ => und_1
    end
  | (noncea_current X1 X2 X3) => 
    match (seval_1 X1),(seval_1 X2),(seval_1 X3) with
      val_1_3,val_1_1,val_1_1 => val_1_1
    | val_1_2,val_1_2,val_1_3 => val_1_1
    | val_1_2,val_1_3,val_1_1 => val_1_2
    | val_1_2,val_1_1,val_1_2 => val_1_2
    | val_1_1,val_1_3,val_1_1 => val_1_2
    | val_1_2,val_1_1,val_1_3 => val_1_2
    | val_1_2,val_1_2,val_1_2 => val_1_2
    | val_1_3,val_1_3,val_1_1 => val_1_1
    | val_1_2,val_1_1,val_1_1 => val_1_1
    | val_1_1,val_1_1,val_1_3 => val_1_2
    | val_1_1,val_1_2,val_1_1 => val_1_1
    | val_1_1,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_2,val_1_1 => 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_3
    | val_1_2,val_1_3,val_1_3 => val_1_1
    | val_1_3,val_1_2,val_1_3 => val_1_2
    | val_1_3,val_1_3,val_1_3 => val_1_1
    | val_1_3,val_1_1,val_1_3 => val_1_1
    | val_1_2,val_1_3,val_1_2 => val_1_1
    | val_1_1,val_1_3,val_1_2 => val_1_1
    | val_1_1,val_1_1,val_1_1 => val_1_3
    | val_1_2,val_1_2,val_1_1 => val_1_1
    | val_1_1,val_1_3,val_1_3 => val_1_2
    | val_1_3,val_1_3,val_1_2 => val_1_1
    | val_1_3,val_1_2,val_1_2 => val_1_2
    | _,_,_ => und_1
    end
  | (s X1) => 
    match (seval_1 X1) with
      val_1_2 => val_1_3
    | val_1_3 => val_1_3
    | val_1_1 => val_1_1
    | _ => und_1
    end
  | nil => val_1_3
  | i => val_1_2
  | bob => val_1_3
  | (cons X1 X2) => 
    match (seval_1 X1),(seval_1 X2) with
      val_1_1,val_1_3 => val_1_1
    | val_1_1,val_1_2 => val_1_1
    | val_1_2,val_1_1 => val_1_1
    | val_1_2,val_1_2 => val_1_2
    | val_1_3,val_1_1 => val_1_1
    | val_1_2,val_1_3 => val_1_2
    | val_1_3,val_1_2 => val_1_3
    | val_1_1,val_1_1 => val_1_1
    | val_1_3,val_1_3 => val_1_2
    | _,_ => und_1
    end
  | prv => val_1_2
  | intruder => val_1_3
  | (key X1 X2) => 
    match (seval_1 X1),(seval_1 X2) with
      val_1_1,val_1_3 => val_1_2
    | val_1_1,val_1_2 => val_1_3
    | val_1_2,val_1_1 => val_1_1
    | val_1_2,val_1_2 => val_1_2
    | val_1_3,val_1_1 => val_1_3
    | val_1_2,val_1_3 => val_1_1
    | val_1_3,val_1_2 => val_1_2
    | val_1_1,val_1_1 => val_1_2
    | val_1_3,val_1_3 => val_1_3
    | _,_ => und_1
    end
  | server => val_1_3
  | sym => val_1_2
  | alice => val_1_3
  | (nonceb_current X1 X2 X3 X4) => 
    match (seval_1 X1),(seval_1 X2),(seval_1 X3),(seval_1 X4) with
      val_1_2,val_1_3,val_1_3,val_1_1 => val_1_1
    | val_1_3,val_1_1,val_1_1,val_1_2 => val_1_1
    | val_1_1,val_1_1,val_1_3,val_1_3 => val_1_3
    | val_1_2,val_1_2,val_1_2,val_1_2 => val_1_1
    | val_1_3,val_1_2,val_1_1,val_1_1 => val_1_1
    | val_1_3,val_1_2,val_1_1,val_1_3 => val_1_1
    | val_1_3,val_1_2,val_1_3,val_1_1 => val_1_1
    | val_1_2,val_1_2,val_1_2,val_1_3 => val_1_1
    | val_1_3,val_1_3,val_1_2,val_1_3 => val_1_1
    | val_1_3,val_1_2,val_1_2,val_1_1 => val_1_1
    | val_1_2,val_1_3,val_1_3,val_1_2 => val_1_3
    | val_1_3,val_1_1,val_1_1,val_1_1 => val_1_3
    | val_1_1,val_1_2,val_1_1,val_1_2 => val_1_1
    | val_1_1,val_1_3,val_1_2,val_1_1 => val_1_1
    | val_1_1,val_1_2,val_1_1,val_1_1 => val_1_1
    | val_1_2,val_1_1,val_1_3,val_1_3 => val_1_3
    | val_1_3,val_1_1,val_1_1,val_1_3 => val_1_3
    | val_1_1,val_1_1,val_1_2,val_1_3 => val_1_1
    | val_1_3,val_1_1,val_1_3,val_1_3 => val_1_3
    | val_1_3,val_1_3,val_1_3,val_1_2 => val_1_1
    | val_1_2,val_1_1,val_1_2,val_1_1 => val_1_3
    | val_1_2,val_1_3,val_1_1,val_1_1 => val_1_3
    | val_1_1,val_1_2,val_1_1,val_1_3 => 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_2,val_1_2 => val_1_1
    | val_1_2,val_1_1,val_1_3,val_1_2 => val_1_3
    | val_1_3,val_1_3,val_1_1,val_1_1 => val_1_1
    | val_1_1,val_1_2,val_1_2,val_1_3 => val_1_1
    | val_1_3,val_1_1,val_1_3,val_1_1 => val_1_1
    | val_1_1,val_1_3,val_1_2,val_1_3 => val_1_3
    | val_1_3,val_1_2,val_1_3,val_1_3 => val_1_1
    | val_1_1,val_1_1,val_1_1,val_1_3 => val_1_1
    | val_1_3,val_1_2,val_1_3,val_1_2 => val_1_1
    | val_1_2,val_1_2,val_1_3,val_1_2 => val_1_1
    | val_1_3,val_1_3,val_1_1,val_1_2 => val_1_1
    | val_1_2,val_1_2,val_1_3,val_1_1 => val_1_1
    | val_1_1,val_1_3,val_1_1,val_1_1 => val_1_3
    | val_1_3,val_1_2,val_1_2,val_1_3 => val_1_1
    | val_1_1,val_1_1,val_1_1,val_1_2 => val_1_3
    | val_1_1,val_1_2,val_1_3,val_1_2 => val_1_1
    | val_1_3,val_1_3,val_1_1,val_1_3 => val_1_1
    | val_1_2,val_1_1,val_1_3,val_1_1 => val_1_2
    | val_1_2,val_1_3,val_1_2,val_1_3 => val_1_1
    | val_1_1,val_1_1,val_1_3,val_1_1 => val_1_2
    | val_1_3,val_1_3,val_1_3,val_1_3 => val_1_1
    | val_1_2,val_1_2,val_1_1,val_1_1 => val_1_1
    | val_1_1,val_1_2,val_1_2,val_1_1 => val_1_1
    | val_1_3,val_1_2,val_1_1,val_1_2 => val_1_1
    | val_1_3,val_1_1,val_1_2,val_1_2 => val_1_2
    | 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_2 => val_1_2
    | val_1_1,val_1_3,val_1_3,val_1_1 => val_1_2
    | val_1_1,val_1_1,val_1_1,val_1_1 => val_1_2
    | val_1_1,val_1_2,val_1_2,val_1_2 => val_1_1
    | val_1_3,val_1_1,val_1_3,val_1_2 => val_1_1
    | val_1_2,val_1_3,val_1_2,val_1_1 => val_1_1
    | val_1_2,val_1_2,val_1_1,val_1_3 => val_1_1
    | val_1_2,val_1_1,val_1_2,val_1_3 => val_1_1
    | val_1_3,val_1_1,val_1_2,val_1_1 => val_1_1
    | val_1_1,val_1_3,val_1_3,val_1_3 => val_1_2
    | val_1_1,val_1_3,val_1_2,val_1_2 => val_1_2
    | val_1_1,val_1_3,val_1_3,val_1_2 => val_1_2
    | val_1_1,val_1_1,val_1_2,val_1_1 => val_1_2
    | val_1_1,val_1_2,val_1_3,val_1_1 => val_1_1
    | val_1_1,val_1_3,val_1_1,val_1_2 => val_1_1
    | val_1_2,val_1_2,val_1_3,val_1_3 => val_1_1
    | val_1_3,val_1_1,val_1_2,val_1_3 => val_1_2
    | val_1_3,val_1_3,val_1_2,val_1_2 => val_1_1
    | val_1_1,val_1_1,val_1_2,val_1_2 => val_1_2
    | val_1_2,val_1_3,val_1_3,val_1_3 => val_1_2
    | val_1_1,val_1_3,val_1_1,val_1_3 => val_1_1
    | val_1_2,val_1_2,val_1_1,val_1_2 => val_1_1
    | val_1_2,val_1_1,val_1_2,val_1_2 => val_1_1
    | val_1_3,val_1_3,val_1_2,val_1_1 => val_1_1
    | val_1_1,val_1_1,val_1_3,val_1_2 => val_1_2
    | val_1_2,val_1_3,val_1_2,val_1_2 => val_1_1
    | val_1_2,val_1_2,val_1_2,val_1_1 => val_1_1
    | val_1_2,val_1_1,val_1_1,val_1_1 => val_1_2
    | val_1_1,val_1_2,val_1_3,val_1_3 => val_1_1
    | val_1_3,val_1_3,val_1_3,val_1_1 => val_1_1
    | val_1_2,val_1_1,val_1_1,val_1_3 => val_1_2
    | _,_,_,_ => und_1
    end
  | pub => val_1_3
  | (nonceb_old X1 X2 X3 X4) => 
    match (seval_1 X1),(seval_1 X2),(seval_1 X3),(seval_1 X4) with
      val_1_2,val_1_3,val_1_3,val_1_1 => val_1_3
    | val_1_3,val_1_1,val_1_1,val_1_2 => val_1_3
    | val_1_1,val_1_1,val_1_3,val_1_3 => val_1_2
    | val_1_2,val_1_2,val_1_2,val_1_2 => val_1_2
    | val_1_3,val_1_2,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_3,val_1_2,val_1_3,val_1_1 => val_1_2
    | val_1_2,val_1_2,val_1_2,val_1_3 => val_1_2
    | val_1_3,val_1_3,val_1_2,val_1_3 => val_1_3
    | val_1_3,val_1_2,val_1_2,val_1_1 => val_1_2
    | val_1_2,val_1_3,val_1_3,val_1_2 => val_1_3
    | val_1_3,val_1_1,val_1_1,val_1_1 => val_1_3
    | val_1_1,val_1_2,val_1_1,val_1_2 => val_1_2
    | val_1_1,val_1_3,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_2,val_1_1,val_1_3,val_1_3 => val_1_3
    | val_1_3,val_1_1,val_1_1,val_1_3 => val_1_3
    | val_1_1,val_1_1,val_1_2,val_1_3 => val_1_3
    | val_1_3,val_1_1,val_1_3,val_1_3 => val_1_3
    | val_1_3,val_1_3,val_1_3,val_1_2 => val_1_3
    | val_1_2,val_1_1,val_1_2,val_1_1 => val_1_2
    | val_1_2,val_1_3,val_1_1,val_1_1 => val_1_3
    | val_1_1,val_1_2,val_1_1,val_1_3 => val_1_2
    | val_1_2,val_1_3,val_1_1,val_1_3 => val_1_3
    | val_1_3,val_1_2,val_1_2,val_1_2 => val_1_2
    | val_1_2,val_1_1,val_1_3,val_1_2 => val_1_2
    | val_1_3,val_1_3,val_1_1,val_1_1 => val_1_3
    | val_1_1,val_1_2,val_1_2,val_1_3 => val_1_2
    | val_1_3,val_1_1,val_1_3,val_1_1 => val_1_2
    | val_1_1,val_1_3,val_1_2,val_1_3 => val_1_3
    | val_1_3,val_1_2,val_1_3,val_1_3 => val_1_2
    | val_1_1,val_1_1,val_1_1,val_1_3 => val_1_3
    | val_1_3,val_1_2,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_3,val_1_3,val_1_1,val_1_2 => val_1_3
    | val_1_2,val_1_2,val_1_3,val_1_1 => val_1_2
    | val_1_1,val_1_3,val_1_1,val_1_1 => val_1_3
    | val_1_3,val_1_2,val_1_2,val_1_3 => val_1_2
    | val_1_1,val_1_1,val_1_1,val_1_2 => val_1_3
    | val_1_1,val_1_2,val_1_3,val_1_2 => 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_3,val_1_1 => val_1_2
    | val_1_2,val_1_3,val_1_2,val_1_3 => val_1_3
    | val_1_1,val_1_1,val_1_3,val_1_1 => val_1_3
    | val_1_3,val_1_3,val_1_3,val_1_3 => val_1_3
    | val_1_2,val_1_2,val_1_1,val_1_1 => val_1_2
    | val_1_1,val_1_2,val_1_2,val_1_1 => val_1_2
    | 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_2 => val_1_3
    | val_1_2,val_1_3,val_1_1,val_1_2 => val_1_3
    | val_1_2,val_1_1,val_1_1,val_1_2 => val_1_2
    | val_1_1,val_1_3,val_1_3,val_1_1 => val_1_3
    | val_1_1,val_1_1,val_1_1,val_1_1 => val_1_3
    | val_1_1,val_1_2,val_1_2,val_1_2 => val_1_2
    | val_1_3,val_1_1,val_1_3,val_1_2 => val_1_2
    | val_1_2,val_1_3,val_1_2,val_1_1 => val_1_3
    | val_1_2,val_1_2,val_1_1,val_1_3 => val_1_2
    | val_1_2,val_1_1,val_1_2,val_1_3 => val_1_3
    | val_1_3,val_1_1,val_1_2,val_1_1 => val_1_3
    | val_1_1,val_1_3,val_1_3,val_1_3 => val_1_3
    | val_1_1,val_1_3,val_1_2,val_1_2 => val_1_3
    | val_1_1,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_3
    | val_1_1,val_1_2,val_1_3,val_1_1 => val_1_2
    | val_1_1,val_1_3,val_1_1,val_1_2 => val_1_3
    | val_1_2,val_1_2,val_1_3,val_1_3 => val_1_2
    | val_1_3,val_1_1,val_1_2,val_1_3 => val_1_2
    | val_1_3,val_1_3,val_1_2,val_1_2 => val_1_3
    | val_1_1,val_1_1,val_1_2,val_1_2 => val_1_3
    | val_1_2,val_1_3,val_1_3,val_1_3 => val_1_3
    | val_1_1,val_1_3,val_1_1,val_1_3 => val_1_3
    | val_1_2,val_1_2,val_1_1,val_1_2 => val_1_2
    | val_1_2,val_1_1,val_1_2,val_1_2 => val_1_3
    | val_1_3,val_1_3,val_1_2,val_1_1 => val_1_3
    | val_1_1,val_1_1,val_1_3,val_1_2 => val_1_2
    | val_1_2,val_1_3,val_1_2,val_1_2 => val_1_3
    | val_1_2,val_1_2,val_1_2,val_1_1 => val_1_2
    | val_1_2,val_1_1,val_1_1,val_1_1 => val_1_2
    | val_1_1,val_1_2,val_1_3,val_1_3 => val_1_2
    | val_1_3,val_1_3,val_1_3,val_1_1 => val_1_3
    | val_1_2,val_1_1,val_1_1,val_1_3 => val_1_3
    | _,_,_,_ => und_1
    end
  | (session_old X1 X2 X3) => 
    match (seval_1 X1),(seval_1 X2),(seval_1 X3) with
      val_1_3,val_1_1,val_1_1 => val_1_2
    | val_1_2,val_1_2,val_1_3 => val_1_2
    | val_1_2,val_1_3,val_1_1 => val_1_2
    | val_1_2,val_1_1,val_1_2 => val_1_2
    | val_1_1,val_1_3,val_1_1 => val_1_2
    | val_1_2,val_1_1,val_1_3 => val_1_2
    | val_1_2,val_1_2,val_1_2 => val_1_2
    | val_1_3,val_1_3,val_1_1 => val_1_2
    | val_1_2,val_1_1,val_1_1 => val_1_2
    | val_1_1,val_1_1,val_1_3 => val_1_2
    | val_1_1,val_1_2,val_1_1 => val_1_2
    | val_1_1,val_1_1,val_1_2 => val_1_2
    | val_1_3,val_1_1,val_1_2 => val_1_2
    | val_1_3,val_1_2,val_1_1 => val_1_2
    | val_1_1,val_1_2,val_1_3 => val_1_2
    | val_1_1,val_1_2,val_1_2 => val_1_2
    | val_1_2,val_1_3,val_1_3 => val_1_2
    | val_1_3,val_1_2,val_1_3 => val_1_2
    | val_1_3,val_1_3,val_1_3 => val_1_2
    | val_1_3,val_1_1,val_1_3 => 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_2
    | val_1_1,val_1_1,val_1_1 => val_1_2
    | val_1_2,val_1_2,val_1_1 => val_1_2
    | val_1_1,val_1_3,val_1_3 => val_1_2
    | val_1_3,val_1_3,val_1_2 => val_1_2
    | val_1_3,val_1_2,val_1_2 => val_1_2
    | _,_,_ => und_1
    end  end.

Remark seval_1_model : forall X:term, ((auto__q1 X) -> (seval_1 X)=val_1_3) /\
  ((auto__q3 X) -> (seval_1 X)=val_1_1) /\
  ((auto__q2 X) -> (seval_1 X)=val_1_2). (* Verify model. *)
Proof.
  induction X.
  (intuition trivial); inversion H.
  (intuition trivial); inversion H.
  split. intro H. inversion H.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  split. intro H. inversion H.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  intro H. inversion H.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  split. intro H. inversion H.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  split. intro H. inversion H.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  intro H. inversion H.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  (intuition trivial); inversion H.
  split. intro H. inversion H.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  split. intro H. inversion H.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  intro H. inversion H.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  (intuition trivial); inversion H.
  split. intro H. inversion H.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  split. intro H. inversion H.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  intro H. inversion H.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  split. intro H. inversion H.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  split. intro H. inversion H.
  intro H. inversion H.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  split. intro H. inversion H.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  split. intro H. inversion H.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  intro H. inversion H.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  split. intro H. inversion H.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  split. intro H. inversion H.
  intro H. inversion H.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
    cut ((seval_1 X4)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
    cut ((seval_1 X4)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  (intuition trivial); inversion H.
  (intuition trivial); inversion H.
  split. intro H. inversion H.
    cut ((seval_1 X)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. trivial.
  split. intro H. inversion H.
    cut ((seval_1 X)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. trivial.
  intro H. inversion H.
  (intuition trivial); inversion H.
  split. intro H. inversion H.
  split. intro H. inversion H.
  intro H. inversion H.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_1). 2:tauto.
    cut ((seval_1 X2)=val_1_1). 2:tauto.
    cut ((seval_1 X3)=val_1_3). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_3). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_2). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_1). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
    cut ((seval_1 X1)=val_1_3). 2:tauto.
    cut ((seval_1 X2)=val_1_2). 2:tauto.
    cut ((seval_1 X3)=val_1_2). 2:tauto.
      simpl. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. intro HH. try rewrite HH. clear HH. trivial.
  (intuition trivial); inversion H.
Qed.

Remark rem_1117 : forall X1:term, auto__q2 X1 -> auto__q3 X1 -> False. (* Check disjointness. *)
Proof.
  intro X1.
  assert (H:=(seval_1_model X1)). intros.
  cut ((seval_1 X1)=val_1_2). 2:tauto.
  cut ((seval_1 X1)=val_1_1). 2:tauto.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1118 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1119 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1118 X1 X2 X3 X4).
Qed.

Remark rem_1120 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1121 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1120 X1 X2 X3 X4).
Qed.

Remark rem_1122 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1123 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1122 X1 X2 X3 X4).
Qed.

Remark rem_1124 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1125 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1124 X1 X2 X3 X4).
Qed.

Remark rem_1126 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_1127 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1126 X1 X2 X3 X4).
Qed.

Remark rem_1128 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1129 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1128 X1 X2 X3 X4).
Qed.

Remark rem_1130 : forall X1:term, auto__q1 X1 -> auto__q2 X1 -> False. (* Check disjointness. *)
Proof.
  intro X1.
  assert (H:=(seval_1_model X1)). intros.
  cut ((seval_1 X1)=val_1_3). 2:tauto.
  cut ((seval_1 X1)=val_1_2). 2:tauto.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1131 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_1132 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1131 X1 X2 X3 X4).
Qed.

Remark rem_1133 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_1134 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1133 X1 X2 X3 X4).
Qed.

Remark rem_1135 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_1136 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1135 X1 X2 X3 X4).
Qed.

Remark rem_1137 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1138 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1137 X1 X2 X3 X4).
Qed.

Remark rem_1139 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_1140 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1139 X1 X2 X3 X4).
Qed.

Remark rem_1141 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_87 X3 X4 X2 H);  intros.
  apply (rem_1119 X1 X2 X3 X4);  tauto.
  apply (rem_1121 X1 X2 X3 X4);  tauto.
  apply (rem_1123 X1 X2 X3 X4);  tauto.
  apply (rem_1125 X1 X2 X3 X4);  tauto.
  apply (rem_1127 X1 X2 X3 X4);  tauto.
  apply (rem_1129 X1 X2 X3 X4);  tauto.
  apply (rem_1132 X1 X2 X3 X4);  tauto.
  apply (rem_1134 X1 X2 X3 X4);  tauto.
  apply (rem_1136 X1 X2 X3 X4);  tauto.
  apply (rem_1138 X1 X2 X3 X4);  tauto.
  apply (rem_1140 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1142 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1141 X1 X2 X3 X4).
Qed.

Remark rem_1143 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1144 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1145 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1143 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1144 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1146 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1145 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1147 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1146 X1 X2 X3 X4).
Qed.

Remark rem_1148 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1149 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1150 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1148 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1149 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1151 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1150 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1152 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1151 X1 X2 X3 X4).
Qed.

Remark rem_1153 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1154 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1155 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1153 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1154 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1156 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1155 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1157 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1156 X1 X2 X3 X4).
Qed.

Remark rem_1158 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X4 nil) H);  intros.
  apply (rem_1147 X1 X2 X3 X4);  tauto.
  apply (rem_1152 X1 X2 X3 X4);  tauto.
  apply (rem_1157 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1159 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X3 X4 X2) -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1158 X1 X2 X3 X4).
Qed.

Remark rem_1160 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_1161 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1160 X1 X2 X3 X4).
Qed.

Remark rem_1162 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1163 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1162 X1 X2 X3 X4).
Qed.

Remark rem_1164 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_673 X3 X4 X2 H);  intros.
  apply (rem_1161 X1 X2 X3 X4);  tauto.
  apply (rem_1163 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1165 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1164 X1 X2 X3 X4).
Qed.

Remark rem_1166 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 (noncea_current X3 X4 X2) (cons X1 (cons X4 nil)) H);  intros.
  apply (rem_1109 X1 X2 X3 X4);  tauto.
  apply (rem_1116 X1 X2 X3 X4);  tauto.
  apply (rem_1142 X1 X2 X3 X4);  tauto.
  apply (rem_1159 X1 X2 X3 X4);  tauto.
  apply (rem_1165 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1167 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q3 pub -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1166 X1 X2 X3 X4).
Qed.

Remark rem_1168 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q3 pub -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1167 X1 X2 X3 X4).
Qed.

Remark rem_1169 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1170 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1171 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1169 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1170 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1172 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1171 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1173 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1172 X1 X2 X3 X4).
Qed.

Remark rem_1174 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1175 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1176 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1174 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1175 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1177 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1176 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1178 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1177 X1 X2 X3 X4).
Qed.

Remark rem_1179 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1180 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1181 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1179 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1180 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1182 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1181 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1183 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1182 X1 X2 X3 X4).
Qed.

Remark rem_1184 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1185 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1186 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1184 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1185 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1187 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1186 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1188 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1187 X1 X2 X3 X4).
Qed.

Remark rem_1189 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1190 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1191 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1189 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1190 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1192 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1191 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1193 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1192 X1 X2 X3 X4).
Qed.

Remark rem_1194 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X3 nil) H);  intros.
  apply (rem_1173 X1 X2 X3 X4);  tauto.
  apply (rem_1178 X1 X2 X3 X4);  tauto.
  apply (rem_1183 X1 X2 X3 X4);  tauto.
  apply (rem_1188 X1 X2 X3 X4);  tauto.
  apply (rem_1193 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1195 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1194 X1 X2 X3 X4).
Qed.

Remark rem_1196 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1197 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1198 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1196 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1197 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1199 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1198 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1200 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1199 X1 X2 X3 X4).
Qed.

Remark rem_1201 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1200 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1202 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1201 X1 X2 X3 X4).
Qed.

Remark rem_1203 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1204 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1203 X1 X2 X3 X4).
Qed.

Remark rem_1205 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1206 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1205 X1 X2 X3 X4).
Qed.

Remark rem_1207 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_1208 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1207 X1 X2 X3 X4).
Qed.

Remark rem_1209 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_1210 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1209 X1 X2 X3 X4).
Qed.

Remark rem_1211 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1212 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 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_1047 X2).
Qed.

Remark rem_1213 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> (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_1211 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1212 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1214 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1213 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_1215 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1214 X1 X2 X3).
Qed.

Remark rem_1216 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> 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_1081 X1).
Qed.

Remark rem_1217 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> 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_1047 X2).
Qed.

Remark rem_1218 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> 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_1216 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1217 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1219 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1218 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_1220 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1219 X1 X2 X3).
Qed.

Remark rem_1221 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> 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_1045 X1).
Qed.

Remark rem_1222 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> 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_1047 X2).
Qed.

Remark rem_1223 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> 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 A4.
  cut (auto__q2 X1). 2:apply (rem_1221 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1222 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1224 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1223 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_1225 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1224 X1 X2 X3).
Qed.

Remark rem_1226 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> 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_1081 X1).
Qed.

Remark rem_1227 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> 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_1047 X2).
Qed.

Remark rem_1228 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> 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_1226 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1227 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1229 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1228 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_1230 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1229 X1 X2 X3).
Qed.

Remark rem_1231 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> 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_1057 X1).
Qed.

Remark rem_1232 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> 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_1047 X2).
Qed.

Remark rem_1233 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X3 nil) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_1231 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1232 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1234 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X3 nil) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1233 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_1235 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X3 nil) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1234 X1 X2 X3).
Qed.

Remark rem_1236 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1107 X1 (cons X3 nil) H);  intros.
  apply (rem_1215 X1 X2 X3);  tauto.
  apply (rem_1220 X1 X2 X3);  tauto.
  apply (rem_1225 X1 X2 X3);  tauto.
  apply (rem_1230 X1 X2 X3);  tauto.
  apply (rem_1235 X1 X2 X3);  tauto.
Qed.

Remark rem_1237 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1236 X1 X2 X3).
Qed.

Remark rem_1238 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1237 X1 X2 X3 X4).
Qed.

Remark rem_1239 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_1240 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1239 X1 X2 X3 X4).
Qed.

Remark rem_1241 : forall X1:term, auto__q1 X1 -> auto__q3 X1 -> False. (* Check disjointness. *)
Proof.
  intro X1.
  assert (H:=(seval_1_model X1)). intros.
  cut ((seval_1 X1)=val_1_3). 2:tauto.
  cut ((seval_1 X1)=val_1_1). 2:tauto.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1242 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_1243 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1242 X1 X2 X3 X4).
Qed.

Remark rem_1244 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1245 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1244 X1 X2 X3 X4).
Qed.

Remark rem_1246 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1247 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1246 X1 X2 X3 X4).
Qed.

Remark rem_1248 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_1249 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1248 X1 X2 X3 X4).
Qed.

Remark rem_1250 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_1251 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1250 X1 X2 X3 X4).
Qed.

Remark rem_1252 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_87 X4 X3 X2 H);  intros.
  apply (rem_1204 X1 X2 X3 X4);  tauto.
  apply (rem_1206 X1 X2 X3 X4);  tauto.
  apply (rem_1208 X1 X2 X3 X4);  tauto.
  apply (rem_1210 X1 X2 X3 X4);  tauto.
  apply (rem_1238 X1 X2 X3 X4);  tauto.
  apply (rem_1240 X1 X2 X3 X4);  tauto.
  apply (rem_1243 X1 X2 X3 X4);  tauto.
  apply (rem_1245 X1 X2 X3 X4);  tauto.
  apply (rem_1247 X1 X2 X3 X4);  tauto.
  apply (rem_1249 X1 X2 X3 X4);  tauto.
  apply (rem_1251 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1253 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1252 X1 X2 X3 X4).
Qed.

Remark rem_1254 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1255 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1256 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1254 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1255 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1257 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1256 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1258 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1257 X1 X2 X3 X4).
Qed.

Remark rem_1259 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1260 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1261 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1259 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1260 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1262 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1261 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1263 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1262 X1 X2 X3 X4).
Qed.

Remark rem_1264 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1265 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1266 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1264 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1265 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1267 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1266 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1268 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1267 X1 X2 X3 X4).
Qed.

Remark rem_1269 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_1258 X1 X2 X3 X4);  tauto.
  apply (rem_1263 X1 X2 X3 X4);  tauto.
  apply (rem_1268 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1270 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1269 X1 X2 X3 X4).
Qed.

Remark rem_1271 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_1272 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1271 X1 X2 X3 X4).
Qed.

Remark rem_1273 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_1274 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1273 X1 X2 X3 X4).
Qed.

Remark rem_1275 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_673 X3 X4 X2 H);  intros.
  apply (rem_1272 X1 X2 X3 X4);  tauto.
  apply (rem_1274 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1276 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1275 X1 X2 X3 X4).
Qed.

Remark rem_1277 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 (noncea_current X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_1195 X1 X2 X3 X4);  tauto.
  apply (rem_1202 X1 X2 X3 X4);  tauto.
  apply (rem_1253 X1 X2 X3 X4);  tauto.
  apply (rem_1270 X1 X2 X3 X4);  tauto.
  apply (rem_1276 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1278 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1277 X1 X2 X3 X4).
Qed.

Remark rem_1279 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1278 X1 X2 X3 X4).
Qed.

Remark rem_1280 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1281 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1282 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1280 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1281 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1283 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1282 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1284 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1283 X1 X2 X3 X4).
Qed.

Remark rem_1285 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1286 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1287 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1285 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1286 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1288 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1287 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1289 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1288 X1 X2 X3 X4).
Qed.

Remark rem_1290 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1291 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1292 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1290 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1291 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1293 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1292 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1294 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1293 X1 X2 X3 X4).
Qed.

Remark rem_1295 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1296 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1297 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1295 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1296 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1298 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1297 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1299 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1298 X1 X2 X3 X4).
Qed.

Remark rem_1300 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1301 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1302 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1300 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1301 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1303 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1302 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1304 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1303 X1 X2 X3 X4).
Qed.

Remark rem_1305 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X4 nil) H);  intros.
  apply (rem_1284 X1 X2 X3 X4);  tauto.
  apply (rem_1289 X1 X2 X3 X4);  tauto.
  apply (rem_1294 X1 X2 X3 X4);  tauto.
  apply (rem_1299 X1 X2 X3 X4);  tauto.
  apply (rem_1304 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1306 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1305 X1 X2 X3 X4).
Qed.

Remark rem_1307 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1308 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1309 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1307 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1308 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1310 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1309 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1311 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1310 X1 X2 X3 X4).
Qed.

Remark rem_1312 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X4 nil) H);  intros.
  apply (rem_1311 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1313 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X3 X4 X2) -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1312 X1 X2 X3 X4).
Qed.

Remark rem_1314 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1315 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1314 X1 X2 X3 X4).
Qed.

Remark rem_1316 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1317 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1316 X1 X2 X3 X4).
Qed.

Remark rem_1318 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_1319 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1318 X1 X2 X3 X4).
Qed.

Remark rem_1320 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_1321 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1320 X1 X2 X3 X4).
Qed.

Remark rem_1322 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1242 X1 X2 X3 X4).
Qed.

Remark rem_1323 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1324 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1323 X1 X2 X3 X4).
Qed.

Remark rem_1325 : forall X1 X2 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1236 X1 X2 X3).
Qed.

Remark rem_1326 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1325 X1 X2 X4).
Qed.

Remark rem_1327 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1326 X1 X2 X3 X4).
Qed.

Remark rem_1328 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1139 X1 X2 X3 X4).
Qed.

Remark rem_1329 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_1330 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1329 X1 X2 X3 X4).
Qed.

Remark rem_1331 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1332 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1331 X1 X2 X3 X4).
Qed.

Remark rem_1333 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_1334 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1333 X1 X2 X3 X4).
Qed.

Remark rem_1335 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_87 X3 X4 X2 H);  intros.
  apply (rem_1315 X1 X2 X3 X4);  tauto.
  apply (rem_1317 X1 X2 X3 X4);  tauto.
  apply (rem_1319 X1 X2 X3 X4);  tauto.
  apply (rem_1321 X1 X2 X3 X4);  tauto.
  apply (rem_1322 X1 X2 X3 X4);  tauto.
  apply (rem_1324 X1 X2 X3 X4);  tauto.
  apply (rem_1327 X1 X2 X3 X4);  tauto.
  apply (rem_1328 X1 X2 X3 X4);  tauto.
  apply (rem_1330 X1 X2 X3 X4);  tauto.
  apply (rem_1332 X1 X2 X3 X4);  tauto.
  apply (rem_1334 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1336 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1335 X1 X2 X3 X4).
Qed.

Remark rem_1337 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1338 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1339 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1337 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1338 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1340 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1339 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1341 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1340 X1 X2 X3 X4).
Qed.

Remark rem_1342 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1343 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1344 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_current X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1342 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1343 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1345 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1344 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1346 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1345 X1 X2 X3 X4).
Qed.

Remark rem_1347 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1348 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1349 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1347 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1348 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1350 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1349 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1351 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1350 X1 X2 X3 X4).
Qed.

Remark rem_1352 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X4 nil) H);  intros.
  apply (rem_1341 X1 X2 X3 X4);  tauto.
  apply (rem_1346 X1 X2 X3 X4);  tauto.
  apply (rem_1351 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1353 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X3 X4 X2) -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1352 X1 X2 X3 X4).
Qed.

Remark rem_1354 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1250 X1 X2 X3 X4).
Qed.

Remark rem_1355 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1356 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1355 X1 X2 X3 X4).
Qed.

Remark rem_1357 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_673 X3 X4 X2 H);  intros.
  apply (rem_1354 X1 X2 X3 X4);  tauto.
  apply (rem_1356 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1358 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1357 X1 X2 X3 X4).
Qed.

Remark rem_1359 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 (noncea_current X3 X4 X2) (cons X1 (cons X4 nil)) H);  intros.
  apply (rem_1306 X1 X2 X3 X4);  tauto.
  apply (rem_1313 X1 X2 X3 X4);  tauto.
  apply (rem_1336 X1 X2 X3 X4);  tauto.
  apply (rem_1353 X1 X2 X3 X4);  tauto.
  apply (rem_1358 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1360 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X4 -> auto__q3 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1359 X1 X2 X3 X4).
Qed.

Remark rem_1361 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X4 -> auto__q3 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1360 X1 X2 X3 X4).
Qed.

Remark rem_1362 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q2 X4 -> auto__q3 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_1168 X1 X2 X3 X4);  tauto.
  apply (rem_1279 X1 X2 X3 X4);  tauto.
  apply (rem_1361 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1363 : forall X1 X2 X3 X4:term, auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q2 X4 -> auto__q3 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1362 X1 X2 X3 X4).
Qed.

Remark rem_1364 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1365 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1366 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1364 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1365 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1367 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1366 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1368 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1367 X1 X2 X3 X4).
Qed.

Remark rem_1369 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1370 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1371 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1369 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1370 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1372 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1371 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1373 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1372 X1 X2 X3 X4).
Qed.

Remark rem_1374 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1375 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1376 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1374 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1375 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1377 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1376 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1378 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1377 X1 X2 X3 X4).
Qed.

Remark rem_1379 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X4 nil) H);  intros.
  apply (rem_1368 X1 X2 X3 X4);  tauto.
  apply (rem_1373 X1 X2 X3 X4);  tauto.
  apply (rem_1378 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1380 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X3 X4 X2) -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1379 X1 X2 X3 X4).
Qed.

Remark rem_1381 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1382 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1383 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1381 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1382 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1384 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1383 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1385 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1384 X1 X2 X3 X4).
Qed.

Remark rem_1386 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1385 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1387 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X3 X4 X2) -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1386 X1 X2 X3 X4).
Qed.

Remark rem_1388 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (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_1057 X1).
Qed.

Remark rem_1389 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (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_1047 X2).
Qed.

Remark rem_1390 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1388 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1389 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1391 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1390 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1392 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1391 X1 X2 X3 X4).
Qed.

Remark rem_1393 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1392 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1394 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X3 X4 X2) -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1393 X1 X2 X3 X4).
Qed.

Remark rem_1395 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 (noncea_current X3 X4 X2) (cons X1 (cons X4 nil)) H);  intros.
  apply (rem_1380 X1 X2 X3 X4);  tauto.
  apply (rem_1387 X1 X2 X3 X4);  tauto.
  apply (rem_1394 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1396 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q3 pub -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1395 X1 X2 X3 X4).
Qed.

Remark rem_1397 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q3 pub -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1396 X1 X2 X3 X4).
Qed.

Remark rem_1398 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1399 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1400 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1398 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1399 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1401 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1400 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1402 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1401 X1 X2 X3 X4).
Qed.

Remark rem_1403 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1404 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1405 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1403 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1404 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1406 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1405 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1407 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1406 X1 X2 X3 X4).
Qed.

Remark rem_1408 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1409 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1410 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1408 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1409 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1411 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1410 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1412 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1411 X1 X2 X3 X4).
Qed.

Remark rem_1413 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_1402 X1 X2 X3 X4);  tauto.
  apply (rem_1407 X1 X2 X3 X4);  tauto.
  apply (rem_1412 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1414 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1413 X1 X2 X3 X4).
Qed.

Remark rem_1415 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1416 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1417 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1415 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1416 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1418 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1417 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1419 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1418 X1 X2 X3 X4).
Qed.

Remark rem_1420 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1419 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1421 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X3 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1420 X1 X2 X3 X4).
Qed.

Remark rem_1422 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1423 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1424 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1422 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1423 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1425 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X3 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1424 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1426 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X3 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1425 X1 X2 X3 X4).
Qed.

Remark rem_1427 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1426 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1428 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1427 X1 X2 X3 X4).
Qed.

Remark rem_1429 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 (noncea_current X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_1414 X1 X2 X3 X4);  tauto.
  apply (rem_1421 X1 X2 X3 X4);  tauto.
  apply (rem_1428 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1430 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1429 X1 X2 X3 X4).
Qed.

Remark rem_1431 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1430 X1 X2 X3 X4).
Qed.

Remark rem_1432 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1433 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1434 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1432 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1433 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1435 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1434 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1436 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1435 X1 X2 X3 X4).
Qed.

Remark rem_1437 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_current X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1438 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1439 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_current X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1437 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1438 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1440 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1439 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1441 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1440 X1 X2 X3 X4).
Qed.

Remark rem_1442 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1443 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1444 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1442 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1443 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1445 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1444 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1446 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1445 X1 X2 X3 X4).
Qed.

Remark rem_1447 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X4 nil) H);  intros.
  apply (rem_1436 X1 X2 X3 X4);  tauto.
  apply (rem_1441 X1 X2 X3 X4);  tauto.
  apply (rem_1446 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1448 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X3 X4 X2) -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1447 X1 X2 X3 X4).
Qed.

Remark rem_1449 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1450 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1451 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1449 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1450 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1452 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1451 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1453 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1452 X1 X2 X3 X4).
Qed.

Remark rem_1454 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X4 nil) H);  intros.
  apply (rem_1453 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1455 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X3 X4 X2) -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q2 X4 -> auto__q2 (noncea_current X3 X4 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1454 X1 X2 X3 X4).
Qed.

Remark rem_1456 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (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_1057 X1).
Qed.

Remark rem_1457 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (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_1047 X2).
Qed.

Remark rem_1458 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1456 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1457 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1459 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1458 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1460 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1459 X1 X2 X3 X4).
Qed.

Remark rem_1461 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X4 nil) H);  intros.
  apply (rem_1460 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1462 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X3 X4 X2) -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1461 X1 X2 X3 X4).
Qed.

Remark rem_1463 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 (noncea_current X3 X4 X2) (cons X1 (cons X4 nil)) H);  intros.
  apply (rem_1448 X1 X2 X3 X4);  tauto.
  apply (rem_1455 X1 X2 X3 X4);  tauto.
  apply (rem_1462 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1464 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X4 -> auto__q2 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1463 X1 X2 X3 X4).
Qed.

Remark rem_1465 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X4 -> auto__q2 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1464 X1 X2 X3 X4).
Qed.

Remark rem_1466 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q2 X4 -> auto__q2 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_1397 X1 X2 X3 X4);  tauto.
  apply (rem_1431 X1 X2 X3 X4);  tauto.
  apply (rem_1465 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1467 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q2 X4 -> auto__q2 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1466 X1 X2 X3 X4).
Qed.

Remark rem_1468 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_1469 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1468 X1 X2 X3 X4).
Qed.

Remark rem_1470 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_1471 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1470 X1 X2 X3 X4).
Qed.

Remark rem_1472 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_673 X3 X4 X2 H);  intros.
  apply (rem_1469 X1 X2 X3 X4);  tauto.
  apply (rem_1471 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1473 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X3 X4 X2) -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (key pub X3) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1472 X1 X2 X3 X4).
Qed.

Remark rem_1474 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q2 X4 -> auto__q3 (key pub X3) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 (noncea_current X3 X4 X2) (cons X1 (cons X4 nil)) H);  intros.
  apply (rem_1473 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1475 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 (key pub X4) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q2 X4 -> auto__q3 (key pub X3) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1474 X1 X2 X3 X4).
Qed.

Remark rem_1476 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_1477 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1476 X1 X2 X3 X4).
Qed.

Remark rem_1478 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_1479 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1478 X1 X2 X3 X4).
Qed.

Remark rem_1480 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_673 X3 X4 X2 H);  intros.
  apply (rem_1477 X1 X2 X3 X4);  tauto.
  apply (rem_1479 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1481 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X3 X4 X2) -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (key pub X3) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1480 X1 X2 X3 X4).
Qed.

Remark rem_1482 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q2 X4 -> auto__q2 (key pub X3) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 (noncea_current X3 X4 X2) (cons X1 (cons X4 nil)) H);  intros.
  apply (rem_1481 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1483 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q2 X4 -> auto__q2 (key pub X3) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1482 X1 X2 X3 X4).
Qed.

Remark rem_1484 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_1485 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1484 X1 X2 X3 X4).
Qed.

Remark rem_1486 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1487 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1486 X1 X2 X3 X4).
Qed.

Remark rem_1488 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_673 X3 X4 X2 H);  intros.
  apply (rem_1485 X1 X2 X3 X4);  tauto.
  apply (rem_1487 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1489 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 pub -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1488 X1 X2 X3 X4).
Qed.

Remark rem_1490 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 pub -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1489 X1 X2 X3 X4).
Qed.

Remark rem_1491 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_1492 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1491 X1 X2 X3 X4).
Qed.

Remark rem_1493 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_1494 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1493 X1 X2 X3 X4).
Qed.

Remark rem_1495 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_673 X3 X4 X2 H);  intros.
  apply (rem_1492 X1 X2 X3 X4);  tauto.
  apply (rem_1494 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1496 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q1 pub -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1495 X1 X2 X3 X4).
Qed.

Remark rem_1497 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q1 pub -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1496 X1 X2 X3 X4).
Qed.

Remark rem_1498 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_1499 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1498 X1 X2 X3 X4).
Qed.

Remark rem_1500 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1501 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1500 X1 X2 X3 X4).
Qed.

Remark rem_1502 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_673 X3 X4 X2 H);  intros.
  apply (rem_1499 X1 X2 X3 X4);  tauto.
  apply (rem_1501 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1503 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q1 pub -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1502 X1 X2 X3 X4).
Qed.

Remark rem_1504 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X3 X4 X2) -> auto__q1 pub -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1503 X1 X2 X3 X4).
Qed.

Remark rem_1505 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_1490 X1 X2 X3 X4);  tauto.
  apply (rem_1497 X1 X2 X3 X4);  tauto.
  apply (rem_1504 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1506 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X3 X4 X2) -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q1 (noncea_current X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1505 X1 X2 X3 X4).
Qed.

Remark rem_1507 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q1 (key pub X3) -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 (noncea_current X3 X4 X2) (cons X1 (cons X4 nil)) H);  intros.
  apply (rem_1506 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1508 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons (noncea_current X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q1 (key pub X3) -> auto__q2 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1507 X1 X2 X3 X4).
Qed.

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_1509 : forall X1 X2:term, auto_knows_current (crypt X1 X2) -> or_6
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q1 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_1510 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_1509 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4) H);  intros.
  apply (rem_1080 X1 X2 X3 X4);  tauto.
  apply (rem_1363 X1 X2 X3 X4);  tauto.
  apply (rem_1467 X1 X2 X3 X4);  tauto.
  apply (rem_1475 X1 X2 X3 X4);  tauto.
  apply (rem_1483 X1 X2 X3 X4);  tauto.
  apply (rem_1508 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1511 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 nil -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1510 X1 X2 X3 X4).
Qed.

Remark rem_1512 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 nil -> auto__q1 X2 -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 nil -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1511 X1 X2 X3 X4).
Qed.

Remark rem_1513 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q2 X3 -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1510 X1 X2 X3 X4).
Qed.

Remark rem_1514 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 nil -> auto__q1 X2 -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 nil -> auto__q2 X3 -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1513 X1 X2 X3 X4).
Qed.

Remark rem_1515 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1516 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1517 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1515 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1516 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1518 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1517 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1519 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1518 X1 X2 X3 X4).
Qed.

Remark rem_1520 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1521 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1522 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1520 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1521 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1523 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1522 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1524 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1523 X1 X2 X3 X4).
Qed.

Remark rem_1525 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1526 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1527 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1525 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1526 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1528 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1527 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1529 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1528 X1 X2 X3 X4).
Qed.

Remark rem_1530 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_1519 X1 X2 X3 X4);  tauto.
  apply (rem_1524 X1 X2 X3 X4);  tauto.
  apply (rem_1529 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1531 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1530 X1 X2 X3 X4).
Qed.

Remark rem_1532 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1533 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1534 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1532 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1533 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1535 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1534 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1536 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1535 X1 X2 X3 X4).
Qed.

Remark rem_1537 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1536 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1538 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1537 X1 X2 X3 X4).
Qed.

Remark rem_1539 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1540 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1541 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1539 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1540 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1542 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1541 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1543 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1542 X1 X2 X3 X4).
Qed.

Remark rem_1544 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1543 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1545 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1544 X1 X2 X3 X4).
Qed.

Remark rem_1546 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 (noncea_current X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_1531 X1 X2 X3 X4);  tauto.
  apply (rem_1538 X1 X2 X3 X4);  tauto.
  apply (rem_1545 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1547 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1546 X1 X2 X3 X4).
Qed.

Remark rem_1548 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1549 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1550 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1548 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1549 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1551 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1550 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1552 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1551 X1 X2 X3 X4).
Qed.

Remark rem_1553 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1554 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1555 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1553 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1554 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1556 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1555 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1557 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1556 X1 X2 X3 X4).
Qed.

Remark rem_1558 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1559 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1560 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1558 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1559 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1561 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1560 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1562 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1561 X1 X2 X3 X4).
Qed.

Remark rem_1563 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1564 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1565 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1563 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1564 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1566 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1565 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1567 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1566 X1 X2 X3 X4).
Qed.

Remark rem_1568 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1569 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1570 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1568 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1569 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1571 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1570 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1572 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1571 X1 X2 X3 X4).
Qed.

Remark rem_1573 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X3 nil) H);  intros.
  apply (rem_1552 X1 X2 X3 X4);  tauto.
  apply (rem_1557 X1 X2 X3 X4);  tauto.
  apply (rem_1562 X1 X2 X3 X4);  tauto.
  apply (rem_1567 X1 X2 X3 X4);  tauto.
  apply (rem_1572 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1574 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1573 X1 X2 X3 X4).
Qed.

Remark rem_1575 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1576 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1577 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1575 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1576 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1578 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1577 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1579 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1578 X1 X2 X3 X4).
Qed.

Remark rem_1580 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1579 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1581 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1580 X1 X2 X3 X4).
Qed.

Remark rem_1582 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_1583 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1582 X1 X2 X3 X4).
Qed.

Remark rem_1584 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_1585 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1584 X1 X2 X3 X4).
Qed.

Remark rem_1586 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1587 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1586 X1 X2 X3 X4).
Qed.

Remark rem_1588 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1589 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1588 X1 X2 X3 X4).
Qed.

Remark rem_1590 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1591 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1590 X1 X2 X3 X4).
Qed.

Remark rem_1592 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1593 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1592 X1 X2 X3 X4).
Qed.

Remark rem_1594 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_1595 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1594 X1 X2 X3 X4).
Qed.

Remark rem_1596 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_1597 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1596 X1 X2 X3 X4).
Qed.

Remark rem_1598 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_1599 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1598 X1 X2 X3 X4).
Qed.

Remark rem_1600 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1601 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1600 X1 X2 X3 X4).
Qed.

Remark rem_1602 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_1603 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1602 X1 X2 X3 X4).
Qed.

Remark rem_1604 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_87 X4 X3 X2 H);  intros.
  apply (rem_1583 X1 X2 X3 X4);  tauto.
  apply (rem_1585 X1 X2 X3 X4);  tauto.
  apply (rem_1587 X1 X2 X3 X4);  tauto.
  apply (rem_1589 X1 X2 X3 X4);  tauto.
  apply (rem_1591 X1 X2 X3 X4);  tauto.
  apply (rem_1593 X1 X2 X3 X4);  tauto.
  apply (rem_1595 X1 X2 X3 X4);  tauto.
  apply (rem_1597 X1 X2 X3 X4);  tauto.
  apply (rem_1599 X1 X2 X3 X4);  tauto.
  apply (rem_1601 X1 X2 X3 X4);  tauto.
  apply (rem_1603 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1605 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1604 X1 X2 X3 X4).
Qed.

Remark rem_1606 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1607 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1608 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1606 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1607 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1609 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1608 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1610 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1609 X1 X2 X3 X4).
Qed.

Remark rem_1611 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1612 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1613 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1611 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1612 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1614 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1613 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1615 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1614 X1 X2 X3 X4).
Qed.

Remark rem_1616 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1617 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1618 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1616 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1617 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1619 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1618 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1620 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1619 X1 X2 X3 X4).
Qed.

Remark rem_1621 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_1610 X1 X2 X3 X4);  tauto.
  apply (rem_1615 X1 X2 X3 X4);  tauto.
  apply (rem_1620 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1622 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1621 X1 X2 X3 X4).
Qed.

Remark rem_1623 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1624 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1623 X1 X2 X3 X4).
Qed.

Remark rem_1625 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1626 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1625 X1 X2 X3 X4).
Qed.

Remark rem_1627 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_673 X4 X3 X2 H);  intros.
  apply (rem_1624 X1 X2 X3 X4);  tauto.
  apply (rem_1626 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1628 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1627 X1 X2 X3 X4).
Qed.

Remark rem_1629 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 (noncea_current X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_1574 X1 X2 X3 X4);  tauto.
  apply (rem_1581 X1 X2 X3 X4);  tauto.
  apply (rem_1605 X1 X2 X3 X4);  tauto.
  apply (rem_1622 X1 X2 X3 X4);  tauto.
  apply (rem_1628 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1630 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 pub -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1629 X1 X2 X3 X4).
Qed.

Remark rem_1631 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 pub -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1630 X1 X2 X3 X4).
Qed.

Remark rem_1632 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1633 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1634 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1632 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1633 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1635 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1634 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1636 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1635 X1 X2 X3 X4).
Qed.

Remark rem_1637 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1638 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1639 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1637 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1638 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1640 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1639 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1641 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1640 X1 X2 X3 X4).
Qed.

Remark rem_1642 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1643 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1644 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1642 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1643 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1645 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1644 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1646 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1645 X1 X2 X3 X4).
Qed.

Remark rem_1647 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1648 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1649 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1647 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1648 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1650 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1649 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1651 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1650 X1 X2 X3 X4).
Qed.

Remark rem_1652 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1653 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1654 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1652 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1653 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1655 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1654 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1656 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1655 X1 X2 X3 X4).
Qed.

Remark rem_1657 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X3 nil) H);  intros.
  apply (rem_1636 X1 X2 X3 X4);  tauto.
  apply (rem_1641 X1 X2 X3 X4);  tauto.
  apply (rem_1646 X1 X2 X3 X4);  tauto.
  apply (rem_1651 X1 X2 X3 X4);  tauto.
  apply (rem_1656 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1658 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1657 X1 X2 X3 X4).
Qed.

Remark rem_1659 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1660 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1661 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1659 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1660 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1662 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1661 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1663 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1662 X1 X2 X3 X4).
Qed.

Remark rem_1664 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1663 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1665 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1664 X1 X2 X3 X4).
Qed.

Remark rem_1666 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1600 X1 X2 X3 X4).
Qed.

Remark rem_1667 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1592 X1 X2 X3 X4).
Qed.

Remark rem_1668 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_1669 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1668 X1 X2 X3 X4).
Qed.

Remark rem_1670 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1671 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 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_1047 X2).
Qed.

Remark rem_1672 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> (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_1670 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1671 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1673 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1672 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_1674 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1673 X1 X2 X3).
Qed.

Remark rem_1675 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> 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_1081 X1).
Qed.

Remark rem_1676 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> 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_1047 X2).
Qed.

Remark rem_1677 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> 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_1675 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1676 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1678 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1677 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_1679 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1678 X1 X2 X3).
Qed.

Remark rem_1680 : forall X1 X2 X3:term, auto__q1 X3 -> 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_1045 X1).
Qed.

Remark rem_1681 : forall X1 X2 X3:term, auto__q1 X3 -> 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_1047 X2).
Qed.

Remark rem_1682 : forall X1 X2 X3:term, auto__q1 X3 -> 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 A4.
  cut (auto__q2 X1). 2:apply (rem_1680 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1681 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1683 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1682 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_1684 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1683 X1 X2 X3).
Qed.

Remark rem_1685 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> 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_1081 X1).
Qed.

Remark rem_1686 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> 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_1047 X2).
Qed.

Remark rem_1687 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> 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_1685 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1686 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1688 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1687 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_1689 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1688 X1 X2 X3).
Qed.

Remark rem_1690 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> 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_1057 X1).
Qed.

Remark rem_1691 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 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_1047 X2).
Qed.

Remark rem_1692 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_1690 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1691 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1693 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1692 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_1694 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1693 X1 X2 X3).
Qed.

Remark rem_1695 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1107 X1 (cons X3 nil) H);  intros.
  apply (rem_1674 X1 X2 X3);  tauto.
  apply (rem_1679 X1 X2 X3);  tauto.
  apply (rem_1684 X1 X2 X3);  tauto.
  apply (rem_1689 X1 X2 X3);  tauto.
  apply (rem_1694 X1 X2 X3);  tauto.
Qed.

Remark rem_1696 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1695 X1 X2 X3).
Qed.

Remark rem_1697 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1696 X1 X2 X3 X4).
Qed.

Remark rem_1698 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1209 X1 X2 X3 X4).
Qed.

Remark rem_1699 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_1700 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1699 X1 X2 X3 X4).
Qed.

Remark rem_1701 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_1702 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1701 X1 X2 X3 X4).
Qed.

Remark rem_1703 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1623 X1 X2 X3 X4).
Qed.

Remark rem_1704 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1586 X1 X2 X3 X4).
Qed.

Remark rem_1705 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_1706 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1705 X1 X2 X3 X4).
Qed.

Remark rem_1707 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_1708 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1707 X1 X2 X3 X4).
Qed.

Remark rem_1709 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_87 X4 X3 X2 H);  intros.
  apply (rem_1666 X1 X2 X3 X4);  tauto.
  apply (rem_1667 X1 X2 X3 X4);  tauto.
  apply (rem_1669 X1 X2 X3 X4);  tauto.
  apply (rem_1697 X1 X2 X3 X4);  tauto.
  apply (rem_1698 X1 X2 X3 X4);  tauto.
  apply (rem_1700 X1 X2 X3 X4);  tauto.
  apply (rem_1702 X1 X2 X3 X4);  tauto.
  apply (rem_1703 X1 X2 X3 X4);  tauto.
  apply (rem_1704 X1 X2 X3 X4);  tauto.
  apply (rem_1706 X1 X2 X3 X4);  tauto.
  apply (rem_1708 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1710 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1709 X1 X2 X3 X4).
Qed.

Remark rem_1711 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1712 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1713 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1711 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1712 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1714 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1713 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1715 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1714 X1 X2 X3 X4).
Qed.

Remark rem_1716 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1717 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1718 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1716 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1717 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1719 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1718 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1720 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1719 X1 X2 X3 X4).
Qed.

Remark rem_1721 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1722 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1723 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1721 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1722 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1724 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1723 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1725 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1724 X1 X2 X3 X4).
Qed.

Remark rem_1726 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_1715 X1 X2 X3 X4);  tauto.
  apply (rem_1720 X1 X2 X3 X4);  tauto.
  apply (rem_1725 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1727 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1726 X1 X2 X3 X4).
Qed.

Remark rem_1728 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_1729 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1728 X1 X2 X3 X4).
Qed.

Remark rem_1730 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_1731 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1730 X1 X2 X3 X4).
Qed.

Remark rem_1732 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_673 X4 X3 X2 H);  intros.
  apply (rem_1729 X1 X2 X3 X4);  tauto.
  apply (rem_1731 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1733 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1732 X1 X2 X3 X4).
Qed.

Remark rem_1734 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 (noncea_current X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_1658 X1 X2 X3 X4);  tauto.
  apply (rem_1665 X1 X2 X3 X4);  tauto.
  apply (rem_1710 X1 X2 X3 X4);  tauto.
  apply (rem_1727 X1 X2 X3 X4);  tauto.
  apply (rem_1733 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1735 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 X4 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1734 X1 X2 X3 X4).
Qed.

Remark rem_1736 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 X4 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1735 X1 X2 X3 X4).
Qed.

Remark rem_1737 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1738 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1739 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1737 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1738 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1740 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1739 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1741 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1740 X1 X2 X3 X4).
Qed.

Remark rem_1742 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1743 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1744 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1742 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1743 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1745 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1744 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1746 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1745 X1 X2 X3 X4).
Qed.

Remark rem_1747 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1748 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1749 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1747 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1748 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1750 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1749 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1751 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1750 X1 X2 X3 X4).
Qed.

Remark rem_1752 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_1753 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1754 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_1752 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1753 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1755 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1754 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1756 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1755 X1 X2 X3 X4).
Qed.

Remark rem_1757 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1758 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1759 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1757 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1758 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1760 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1759 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1761 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1760 X1 X2 X3 X4).
Qed.

Remark rem_1762 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X3 nil) H);  intros.
  apply (rem_1741 X1 X2 X3 X4);  tauto.
  apply (rem_1746 X1 X2 X3 X4);  tauto.
  apply (rem_1751 X1 X2 X3 X4);  tauto.
  apply (rem_1756 X1 X2 X3 X4);  tauto.
  apply (rem_1761 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1763 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1762 X1 X2 X3 X4).
Qed.

Remark rem_1764 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1765 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1766 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1764 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1765 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1767 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1766 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1768 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1767 X1 X2 X3 X4).
Qed.

Remark rem_1769 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1768 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1770 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1769 X1 X2 X3 X4).
Qed.

Remark rem_1771 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_1772 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1771 X1 X2 X3 X4).
Qed.

Remark rem_1773 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_1774 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1773 X1 X2 X3 X4).
Qed.

Remark rem_1775 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_1776 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1775 X1 X2 X3 X4).
Qed.

Remark rem_1777 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_1778 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1777 X1 X2 X3 X4).
Qed.

Remark rem_1779 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1701 X1 X2 X3 X4).
Qed.

Remark rem_1780 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_1781 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1780 X1 X2 X3 X4).
Qed.

Remark rem_1782 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_1783 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1782 X1 X2 X3 X4).
Qed.

Remark rem_1784 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1602 X1 X2 X3 X4).
Qed.

Remark rem_1785 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_1786 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1785 X1 X2 X3 X4).
Qed.

Remark rem_1787 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_1788 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1787 X1 X2 X3 X4).
Qed.

Remark rem_1789 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_1790 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1789 X1 X2 X3 X4).
Qed.

Remark rem_1791 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_87 X4 X3 X2 H);  intros.
  apply (rem_1772 X1 X2 X3 X4);  tauto.
  apply (rem_1774 X1 X2 X3 X4);  tauto.
  apply (rem_1776 X1 X2 X3 X4);  tauto.
  apply (rem_1778 X1 X2 X3 X4);  tauto.
  apply (rem_1779 X1 X2 X3 X4);  tauto.
  apply (rem_1781 X1 X2 X3 X4);  tauto.
  apply (rem_1783 X1 X2 X3 X4);  tauto.
  apply (rem_1784 X1 X2 X3 X4);  tauto.
  apply (rem_1786 X1 X2 X3 X4);  tauto.
  apply (rem_1788 X1 X2 X3 X4);  tauto.
  apply (rem_1790 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1792 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1791 X1 X2 X3 X4).
Qed.

Remark rem_1793 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1794 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1795 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1793 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1794 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1796 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1795 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1797 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1796 X1 X2 X3 X4).
Qed.

Remark rem_1798 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1799 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1800 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1798 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1799 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1801 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1800 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1802 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1801 X1 X2 X3 X4).
Qed.

Remark rem_1803 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1804 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1805 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1803 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1804 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1806 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1805 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1807 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1806 X1 X2 X3 X4).
Qed.

Remark rem_1808 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_1797 X1 X2 X3 X4);  tauto.
  apply (rem_1802 X1 X2 X3 X4);  tauto.
  apply (rem_1807 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1809 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1808 X1 X2 X3 X4).
Qed.

Remark rem_1810 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1707 X1 X2 X3 X4).
Qed.

Remark rem_1811 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_1812 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1811 X1 X2 X3 X4).
Qed.

Remark rem_1813 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_673 X4 X3 X2 H);  intros.
  apply (rem_1810 X1 X2 X3 X4);  tauto.
  apply (rem_1812 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1814 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1813 X1 X2 X3 X4).
Qed.

Remark rem_1815 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 (noncea_current X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_1763 X1 X2 X3 X4);  tauto.
  apply (rem_1770 X1 X2 X3 X4);  tauto.
  apply (rem_1792 X1 X2 X3 X4);  tauto.
  apply (rem_1809 X1 X2 X3 X4);  tauto.
  apply (rem_1814 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1816 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1815 X1 X2 X3 X4).
Qed.

Remark rem_1817 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1816 X1 X2 X3 X4).
Qed.

Remark rem_1818 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (key pub X4) -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_703 pub X4 H);  intros.
  apply (rem_1631 X1 X2 X3 X4);  tauto.
  apply (rem_1736 X1 X2 X3 X4);  tauto.
  apply (rem_1817 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1819 : forall X1 X2 X3 X4:term, auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (key pub X4) -> auto__q3 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1818 X1 X2 X3 X4).
Qed.

Remark rem_1820 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1821 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1822 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1820 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1821 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1823 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1822 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1824 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1823 X1 X2 X3 X4).
Qed.

Remark rem_1825 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1826 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1827 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1825 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1826 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1828 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1827 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1829 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1828 X1 X2 X3 X4).
Qed.

Remark rem_1830 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1831 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1832 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1830 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1831 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1833 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1832 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1834 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1833 X1 X2 X3 X4).
Qed.

Remark rem_1835 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_1824 X1 X2 X3 X4);  tauto.
  apply (rem_1829 X1 X2 X3 X4);  tauto.
  apply (rem_1834 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1836 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1835 X1 X2 X3 X4).
Qed.

Remark rem_1837 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1838 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1839 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1837 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1838 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1840 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1839 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1841 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1840 X1 X2 X3 X4).
Qed.

Remark rem_1842 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1841 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1843 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1842 X1 X2 X3 X4).
Qed.

Remark rem_1844 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1845 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1846 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1844 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1845 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1847 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1846 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1848 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1847 X1 X2 X3 X4).
Qed.

Remark rem_1849 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1848 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1850 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1849 X1 X2 X3 X4).
Qed.

Remark rem_1851 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 (noncea_current X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_1836 X1 X2 X3 X4);  tauto.
  apply (rem_1843 X1 X2 X3 X4);  tauto.
  apply (rem_1850 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1852 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 pub -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1851 X1 X2 X3 X4).
Qed.

Remark rem_1853 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 pub -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1852 X1 X2 X3 X4).
Qed.

Remark rem_1854 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1855 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1856 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1854 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1855 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1857 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1856 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1858 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1857 X1 X2 X3 X4).
Qed.

Remark rem_1859 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1860 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1861 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1859 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1860 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1862 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1861 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1863 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1862 X1 X2 X3 X4).
Qed.

Remark rem_1864 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1865 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1866 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1864 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1865 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1867 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1866 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1868 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1867 X1 X2 X3 X4).
Qed.

Remark rem_1869 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_1858 X1 X2 X3 X4);  tauto.
  apply (rem_1863 X1 X2 X3 X4);  tauto.
  apply (rem_1868 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1870 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1869 X1 X2 X3 X4).
Qed.

Remark rem_1871 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1872 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1873 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1871 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1872 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1874 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1873 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1875 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1874 X1 X2 X3 X4).
Qed.

Remark rem_1876 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1875 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1877 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1876 X1 X2 X3 X4).
Qed.

Remark rem_1878 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1879 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1880 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1878 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1879 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1881 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1880 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1882 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1881 X1 X2 X3 X4).
Qed.

Remark rem_1883 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1882 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1884 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_current X4 X3 X2) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1883 X1 X2 X3 X4).
Qed.

Remark rem_1885 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 (noncea_current X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_1870 X1 X2 X3 X4);  tauto.
  apply (rem_1877 X1 X2 X3 X4);  tauto.
  apply (rem_1884 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1886 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1885 X1 X2 X3 X4).
Qed.

Remark rem_1887 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1886 X1 X2 X3 X4).
Qed.

Remark rem_1888 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1889 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1890 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1888 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1889 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1891 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1890 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1892 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1891 X1 X2 X3 X4).
Qed.

Remark rem_1893 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_1894 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1895 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_1893 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1894 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1896 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1895 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1897 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1896 X1 X2 X3 X4).
Qed.

Remark rem_1898 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1899 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1900 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1898 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1899 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1901 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1900 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1902 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1901 X1 X2 X3 X4).
Qed.

Remark rem_1903 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_1892 X1 X2 X3 X4);  tauto.
  apply (rem_1897 X1 X2 X3 X4);  tauto.
  apply (rem_1902 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1904 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1903 X1 X2 X3 X4).
Qed.

Remark rem_1905 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1906 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1907 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1905 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1906 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1908 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1907 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1909 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1908 X1 X2 X3 X4).
Qed.

Remark rem_1910 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1909 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1911 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1910 X1 X2 X3 X4).
Qed.

Remark rem_1912 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_1913 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_1914 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_1912 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1913 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1915 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1914 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1916 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1915 X1 X2 X3 X4).
Qed.

Remark rem_1917 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_1916 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1918 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_current X4 X3 X2) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1917 X1 X2 X3 X4).
Qed.

Remark rem_1919 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 (noncea_current X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_1904 X1 X2 X3 X4);  tauto.
  apply (rem_1911 X1 X2 X3 X4);  tauto.
  apply (rem_1918 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1920 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1919 X1 X2 X3 X4).
Qed.

Remark rem_1921 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1920 X1 X2 X3 X4).
Qed.

Remark rem_1922 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (key pub X4) -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_703 pub X4 H);  intros.
  apply (rem_1853 X1 X2 X3 X4);  tauto.
  apply (rem_1887 X1 X2 X3 X4);  tauto.
  apply (rem_1921 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1923 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (key pub X4) -> auto__q2 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1922 X1 X2 X3 X4).
Qed.

Remark rem_1924 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_1925 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1924 X1 X2 X3 X4).
Qed.

Remark rem_1926 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_1927 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1926 X1 X2 X3 X4).
Qed.

Remark rem_1928 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_673 X4 X3 X2 H);  intros.
  apply (rem_1925 X1 X2 X3 X4);  tauto.
  apply (rem_1927 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1929 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1928 X1 X2 X3 X4).
Qed.

Remark rem_1930 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 (noncea_current X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_1929 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1931 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 (key pub X4) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 (key pub X4) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1930 X1 X2 X3 X4).
Qed.

Remark rem_1932 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_1933 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1932 X1 X2 X3 X4).
Qed.

Remark rem_1934 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_1935 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1934 X1 X2 X3 X4).
Qed.

Remark rem_1936 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_673 X4 X3 X2 H);  intros.
  apply (rem_1933 X1 X2 X3 X4);  tauto.
  apply (rem_1935 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1937 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1936 X1 X2 X3 X4).
Qed.

Remark rem_1938 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 (noncea_current X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_1937 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1939 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1938 X1 X2 X3 X4).
Qed.

Remark rem_1940 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1941 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1940 X1 X2 X3 X4).
Qed.

Remark rem_1942 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_1943 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1942 X1 X2 X3 X4).
Qed.

Remark rem_1944 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_673 X4 X3 X2 H);  intros.
  apply (rem_1941 X1 X2 X3 X4);  tauto.
  apply (rem_1943 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1945 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 pub -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1944 X1 X2 X3 X4).
Qed.

Remark rem_1946 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 pub -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1945 X1 X2 X3 X4).
Qed.

Remark rem_1947 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_1948 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1947 X1 X2 X3 X4).
Qed.

Remark rem_1949 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_1950 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1949 X1 X2 X3 X4).
Qed.

Remark rem_1951 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_673 X4 X3 X2 H);  intros.
  apply (rem_1948 X1 X2 X3 X4);  tauto.
  apply (rem_1950 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1952 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q1 pub -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1951 X1 X2 X3 X4).
Qed.

Remark rem_1953 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q1 pub -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1952 X1 X2 X3 X4).
Qed.

Remark rem_1954 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_1955 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1954 X1 X2 X3 X4).
Qed.

Remark rem_1956 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_1957 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1956 X1 X2 X3 X4).
Qed.

Remark rem_1958 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_673 X4 X3 X2 H);  intros.
  apply (rem_1955 X1 X2 X3 X4);  tauto.
  apply (rem_1957 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1959 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q1 pub -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1958 X1 X2 X3 X4).
Qed.

Remark rem_1960 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (noncea_current X4 X3 X2) -> auto__q1 pub -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1959 X1 X2 X3 X4).
Qed.

Remark rem_1961 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (key pub X4) -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_703 pub X4 H);  intros.
  apply (rem_1946 X1 X2 X3 X4);  tauto.
  apply (rem_1953 X1 X2 X3 X4);  tauto.
  apply (rem_1960 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1962 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (key pub X4) -> auto__q1 (noncea_current X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1961 X1 X2 X3 X4).
Qed.

Remark rem_1963 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 (noncea_current X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_1962 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1964 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1963 X1 X2 X3 X4).
Qed.

Remark rem_1965 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_1509 (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4) H);  intros.
  apply (rem_1547 X1 X2 X3 X4);  tauto.
  apply (rem_1819 X1 X2 X3 X4);  tauto.
  apply (rem_1923 X1 X2 X3 X4);  tauto.
  apply (rem_1931 X1 X2 X3 X4);  tauto.
  apply (rem_1939 X1 X2 X3 X4);  tauto.
  apply (rem_1964 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1966 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 nil -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1965 X1 X2 X3 X4).
Qed.

Remark rem_1967 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 nil -> auto__q1 X2 -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 nil -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1966 X1 X2 X3 X4).
Qed.

Remark rem_1968 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_105 X3 nil H);  intros.
  apply (rem_1512 X1 X2 X3 X4);  tauto.
  apply (rem_1514 X1 X2 X3 X4);  tauto.
  apply (rem_1967 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1969 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_689 X2 (cons X3 nil) H);  intros.
  apply (rem_1968 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1970 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto__q3 (key prv server) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (cons X2 (cons X3 nil)) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1969 X1 X2 X3 X4).
Qed.

Remark rem_1971 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 (key prv server) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (cons X2 (cons X3 nil)) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1969 X1 X2 X3 X4).
Qed.

Remark rem_1972 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto__q1 (key prv server) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (cons X2 (cons X3 nil)) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2)). tauto.
  exact (rem_1969 X1 X2 X3 X4).
Qed.

Remark rem_1973 : forall X1 X2 X3 X4:term, auto_knows_current (crypt (cons X2 (cons X3 nil)) (key prv server)) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1509 (cons X2 (cons X3 nil)) (key prv server) H);  intros.
  apply (rem_1035 X1 X2 X3 X4);  tauto.
  apply (rem_1042 X1 X2 X3 X4);  tauto.
  apply (rem_1044 X1 X2 X3 X4);  tauto.
  apply (rem_1970 X1 X2 X3 X4);  tauto.
  apply (rem_1971 X1 X2 X3 X4);  tauto.
  apply (rem_1972 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1974 : forall _big_a _big_b _big_kPb _big_nb:term, auto_knows_current (crypt (cons (noncea_current _big_a _big_b _big_kPb) (cons _big_nb (cons _big_b nil))) (key pub _big_a)) -> auto_knows_current (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) -> auto_knows_current (crypt _big_nb _big_kPb). (* Prove equivalent, normalized clause. *)
Proof.
   intros X4 X3 X2 X1.
  cut (auto_knows_current (crypt (cons X2 (cons X3 nil)) (key prv server)) -> auto_knows_current (crypt (cons (noncea_current X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_1973 X1 X2 X3 X4).
Qed.

Remark rem_1975 : auto_agent i. (* Deduce positive atom. *)
Proof.
   case rem_1. intros. apply trans_agent_i_1;  tauto.
 tauto.
Qed.
Hint Constructors auto__q1 : h1mc_states_hint.
Hint Constructors auto__q3 : h1mc_states_hint.
Hint Constructors auto__q2 : h1mc_states_hint.

Remark rem_1976 : forall X1:term, auto__q1 X1 \/ auto__q3 X1 \/ auto__q2 X1. (* Check universal disjunction. *)
Proof.
 induction X1;  intuition auto with h1mc_states_hint.
Qed.

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

Remark rem_1978 : forall X1:term, auto__q1 X1 -> auto__q1 pub. (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_1977 X1 A1). clear  A1. intros. apply trans__q1_pub_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_1979 : 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_1978 X1);  assumption.
  cut (auto__q1 X1). 2:apply (rem_1057 X1);  assumption.
  tauto.
Qed.

Remark rem_1980 : forall X1:term, auto__q1 X1 -> auto_knows_current (key pub X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_1979 X1 A1). clear  A1. intros. apply trans_knows_current_key_7;  tauto.
 clear  A1. tauto.
Qed.

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

Remark rem_1982 : forall X1:term, auto__q3 X1 -> auto__q1 pub. (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_1981 X1 A1). clear  A1. intros. apply trans__q1_pub_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_1983 : 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_1982 X1);  assumption.
  cut (auto__q3 X1). 2:apply (rem_1081 X1);  assumption.
  tauto.
Qed.

Remark rem_1984 : forall X1:term, auto__q3 X1 -> auto_knows_current (key pub X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_1983 X1 A1). clear  A1. intros. apply trans_knows_current_key_5;  tauto.
 clear  A1. tauto.
Qed.

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

Remark rem_1986 : forall X1:term, auto__q2 X1 -> auto__q1 pub. (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_1985 X1 A1). clear  A1. intros. apply trans__q1_pub_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_1987 : 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_1986 X1);  assumption.
  cut (auto__q2 X1). 2:apply (rem_1045 X1);  assumption.
  tauto.
Qed.

Remark rem_1988 : forall X1:term, auto__q2 X1 -> auto_knows_current (key pub X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_1987 X1 A1). clear  A1. intros. apply trans_knows_current_key_6;  tauto.
 clear  A1. tauto.
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_1989 : forall X1:term, auto_knows_current (key pub X1). (* Cut. *)
Proof.
  intros X1.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_1980 X1)). tauto.
  assert (HH:=(rem_1984 X1)). tauto.
  assert (HH:=(rem_1988 X1)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_1990 : 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_1989 X1).
Qed.

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

Remark rem_1992 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

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

Remark rem_1994 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

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

Remark rem_1996 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_1997 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1992 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1994 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1996 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_1998 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1997 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_9;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_1999 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

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

Remark rem_2001 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

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

Remark rem_2003 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2004 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1999 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2001 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2003 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2005 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2004 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_15;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2006 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

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

Remark rem_2008 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2009 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2010 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_2006 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2008 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2009 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2011 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2010 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_23;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2012 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 (noncea_old X1 X2 X3) -> auto_knows_old (noncea_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_25 X1 X2 X3 H);  intros.
  apply (rem_1998 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2005 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2011 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_2013 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2014 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2015 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_2013 epsilon_m_q2_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2014 epsilon_m_q2_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2016 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2015 epsilon_m_q2_pknows_old X1 X2 A1 A2). clear  epsilon_m_q2_pknows_old A1 A2. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2. tauto.
Defined.

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

Remark rem_2018 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2019 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2020 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_2018 epsilon_m_q2_pknows_old X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2019 epsilon_m_q2_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2021 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2020 epsilon_m_q2_pknows_old X1 X2 A1 A2). clear  epsilon_m_q2_pknows_old A1 A2. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2022 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 (crypt X1 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_36 X1 X2 H);  intros.
  apply (rem_2016 epsilon_m_q2_pknows_old X1 X2);  tauto.
  apply (rem_2021 epsilon_m_q2_pknows_old X1 X2);  tauto.
Defined.

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

Remark rem_2024 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2025 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

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

Remark rem_2027 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2028 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_2024 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2025 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2027 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2029 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2028 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_2;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2030 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2031 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2032 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2033 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_2030 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2031 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2032 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2034 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2033 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_3;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2035 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1997 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_4;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2036 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2037 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2038 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2039 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_2036 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2037 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2038 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2040 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2039 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_5;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2041 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2042 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2043 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2044 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_2041 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2042 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2043 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2045 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2044 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_6;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2046 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2004 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_8;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2047 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2048 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2049 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2050 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_2047 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2048 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2049 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2051 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2050 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_9;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2052 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2053 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2054 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2055 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_2052 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2053 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2054 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2056 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2055 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_10;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2057 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2058 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2059 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2060 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_2057 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2058 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2059 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2061 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2060 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_11;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2062 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2063 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2064 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2065 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_2062 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2063 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2064 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2066 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2065 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_12;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2067 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2068 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2069 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2070 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_2067 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2068 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2069 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2071 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2070 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_13;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2072 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 (noncea_current X1 X2 X3) -> auto_knows_old (noncea_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_87 X1 X2 X3 H);  intros.
  apply (rem_2029 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2034 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2035 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2040 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2045 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2046 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2051 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2056 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2061 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2066 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2071 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
Defined.

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

Remark rem_2074 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> auto_knows_old i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old.  case (rem_2073 epsilon_m_q2_pknows_old). clear  epsilon_m_q2_pknows_old. intros. apply trans_knows_old_i_1;  tauto.
 clear  epsilon_m_q2_pknows_old. tauto.
Defined.

Remark rem_2075 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> auto__q2 i -> auto_knows_old i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intro H. intros.
  elim (rem_91 H);  intros.
  apply (rem_2074 epsilon_m_q2_pknows_old);  tauto.
Defined.

Remark rem_2076 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2077 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2078 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_2076 epsilon_m_q2_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2077 epsilon_m_q2_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2079 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2078 epsilon_m_q2_pknows_old X1 X2 A1 A2). clear  epsilon_m_q2_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2080 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2081 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2082 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_2080 epsilon_m_q2_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2081 epsilon_m_q2_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2083 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2082 epsilon_m_q2_pknows_old X1 X2 A1 A2). clear  epsilon_m_q2_pknows_old A1 A2. intros. apply trans_knows_old_cons_2;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2084 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2085 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2086 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_2084 epsilon_m_q2_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2085 epsilon_m_q2_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2087 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2086 epsilon_m_q2_pknows_old X1 X2 A1 A2). clear  epsilon_m_q2_pknows_old A1 A2. intros. apply trans_knows_old_cons_4;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2088 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_105 X1 X2 H);  intros.
  apply (rem_2079 epsilon_m_q2_pknows_old X1 X2);  tauto.
  apply (rem_2083 epsilon_m_q2_pknows_old X1 X2);  tauto.
  apply (rem_2087 epsilon_m_q2_pknows_old X1 X2);  tauto.
Defined.

Remark rem_2089 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> auto_knows_old prv. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old.  case (rem_2073 epsilon_m_q2_pknows_old). clear  epsilon_m_q2_pknows_old. intros. apply trans_knows_old_prv_1;  tauto.
 clear  epsilon_m_q2_pknows_old. tauto.
Defined.

Remark rem_2090 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> auto__q2 prv -> auto_knows_old prv. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intro H. intros.
  elim (rem_108 H);  intros.
  apply (rem_2089 epsilon_m_q2_pknows_old);  tauto.
Defined.

Remark rem_2091 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2078 epsilon_m_q2_pknows_old X1 X2 A1 A2). clear  epsilon_m_q2_pknows_old A1 A2. intros. apply trans_knows_old_key_1;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2092 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2093 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2094 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_2092 epsilon_m_q2_pknows_old X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2093 epsilon_m_q2_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2095 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2094 epsilon_m_q2_pknows_old X1 X2 A1 A2). clear  epsilon_m_q2_pknows_old A1 A2. intros. apply trans_knows_old_key_2;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2096 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2015 epsilon_m_q2_pknows_old X1 X2 A1 A2). clear  epsilon_m_q2_pknows_old A1 A2. intros. apply trans_knows_old_key_3;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2097 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2098 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2099 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_2097 epsilon_m_q2_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2098 epsilon_m_q2_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2100 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2099 epsilon_m_q2_pknows_old X1 X2 A1 A2). clear  epsilon_m_q2_pknows_old A1 A2. intros. apply trans_knows_old_key_6;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2101 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 (key X1 X2) -> auto_knows_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_120 X1 X2 H);  intros.
  apply (rem_2091 epsilon_m_q2_pknows_old X1 X2);  tauto.
  apply (rem_2095 epsilon_m_q2_pknows_old X1 X2);  tauto.
  apply (rem_2096 epsilon_m_q2_pknows_old X1 X2);  tauto.
  apply (rem_2100 epsilon_m_q2_pknows_old X1 X2);  tauto.
Defined.

Remark rem_2102 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> auto_knows_old sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old.  case (rem_2073 epsilon_m_q2_pknows_old). clear  epsilon_m_q2_pknows_old. intros. apply trans_knows_old_sym_1;  tauto.
 clear  epsilon_m_q2_pknows_old. tauto.
Defined.

Remark rem_2103 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> auto__q2 sym -> auto_knows_old sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intro H. intros.
  elim (rem_123 H);  intros.
  apply (rem_2102 epsilon_m_q2_pknows_old);  tauto.
Defined.

Remark rem_2104 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2105 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2106 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2107 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X4:term, auto__q2 X4 -> auto__q2 X4. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2108 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2109 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2104 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2105 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2106 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2108 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2110 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2109 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_2;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2111 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2112 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2113 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2114 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X4:term, auto__q1 X4 -> auto__q1 X4. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2115 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2114 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2116 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2111 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2112 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2113 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2115 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2117 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2116 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_5;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2118 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2119 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2120 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2121 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X4:term, auto__q3 X4 -> auto__q3 X4. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2122 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2123 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2118 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2119 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2120 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2122 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2124 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2123 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_7;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2125 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2126 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2127 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2128 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2129 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2125 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2126 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2127 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2128 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2130 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2129 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_8;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2131 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2132 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2133 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2134 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2135 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2131 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2132 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2133 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2134 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2136 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2135 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_10;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2137 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2138 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2139 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2140 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2114 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2141 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2137 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2138 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2139 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2140 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2142 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2141 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_11;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2143 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2144 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2145 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2146 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2147 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2143 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2144 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2145 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2146 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2148 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2147 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_13;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2149 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2150 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2151 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2152 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2153 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2149 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2150 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2151 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2152 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2154 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2153 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_14;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2155 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2156 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2157 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2158 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2159 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2155 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2156 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2157 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2158 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2160 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2159 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_15;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2161 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2162 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2163 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2164 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2114 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2165 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2161 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2162 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2163 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2164 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2166 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2165 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_20;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2167 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2168 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2169 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2170 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2171 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2167 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2168 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2169 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2170 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2172 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2171 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_22;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2173 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2174 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2175 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2176 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2177 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2173 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2174 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2175 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2176 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2178 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2177 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_24;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2179 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2180 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2181 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2182 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2183 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2179 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2180 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2181 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2182 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2184 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2183 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_26;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2185 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2186 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2187 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2188 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2189 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2185 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2186 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2187 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2188 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2190 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2189 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_27;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2191 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2192 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2193 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2194 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2114 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2195 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2191 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2192 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2193 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2194 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2196 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2195 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_28;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2197 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2198 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2199 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2200 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2201 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2197 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2198 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2199 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2200 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2202 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2201 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_29;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2203 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 (nonceb_current X1 X2 X3 X4) -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_224 X1 X2 X3 X4 H);  intros.
  apply (rem_2110 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2117 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2124 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2130 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2136 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2142 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2148 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2154 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2160 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2166 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2172 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2178 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2184 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2190 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2196 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2202 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
Defined.

Remark rem_2204 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2205 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2206 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2207 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2208 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2204 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2205 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2206 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2207 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2209 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2208 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_1;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2210 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2211 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2212 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2213 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2214 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2210 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2211 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2212 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2213 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2215 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2214 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_2;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2216 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2217 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2218 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2219 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2220 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2216 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2217 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2218 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2219 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2221 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2220 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_3;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2222 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2109 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_4;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2223 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2224 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2225 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2226 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2227 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2223 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2224 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2225 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2226 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2228 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2227 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_9;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2229 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2230 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2231 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2232 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2233 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2229 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2230 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2231 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2232 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2234 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2233 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_11;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2235 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2236 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2237 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2238 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2114 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2239 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2235 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2236 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2237 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2238 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2240 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2239 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_15;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2241 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2242 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2243 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2244 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2245 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2241 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2242 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2243 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2244 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2246 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2245 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_16;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2247 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2116 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_17;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2248 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2249 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2250 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2251 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2252 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2248 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2249 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2250 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2251 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2253 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2252 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_19;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2254 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2255 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2256 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2257 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2258 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2254 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2255 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2256 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2257 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2259 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2258 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_20;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2260 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2123 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_21;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2261 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2262 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2263 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2264 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2265 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2261 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2262 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2263 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2264 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2266 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2265 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_22;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2267 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2268 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2269 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2270 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2271 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2267 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2268 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2269 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2270 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2272 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2271 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_24;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2273 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2274 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2275 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2276 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2114 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2277 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2273 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2274 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2275 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2276 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2278 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2277 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_25;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2279 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2280 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2281 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2282 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2114 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2283 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2279 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2280 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2281 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2282 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2284 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2283 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_28;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2285 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2286 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2287 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2288 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2114 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2289 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2285 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2286 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2287 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2288 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2290 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2289 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_37;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2291 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2292 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2293 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2294 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2295 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2291 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2292 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2293 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2294 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2296 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2295 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_42;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2297 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2298 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2299 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2300 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2114 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2301 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2297 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2298 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2299 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2300 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2302 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2301 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_45;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2303 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2304 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2305 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2306 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2307 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2303 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2304 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2305 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2306 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2308 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2307 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_46;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2309 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2310 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2311 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2312 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2313 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2309 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2310 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2311 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2312 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2314 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2313 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_49;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2315 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2316 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2317 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2318 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2319 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2315 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2316 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2317 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2318 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2320 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2319 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_50;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2321 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2322 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2323 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2324 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2114 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2325 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2321 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2322 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2323 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2324 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2326 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2325 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_52;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2327 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2328 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2329 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2330 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2331 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2327 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2328 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2329 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2330 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2332 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2331 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_54;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2333 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2334 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2335 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2336 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2114 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2337 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2333 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2334 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2335 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2336 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2338 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2337 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_60;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2339 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2340 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2341 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2342 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2343 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2339 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2340 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2341 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2342 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2344 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2343 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_63;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2345 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2177 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_64;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2346 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2347 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2348 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2349 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2350 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2346 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2347 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2348 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2349 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2351 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2350 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_67;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2352 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2353 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2354 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2355 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2356 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2352 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2353 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2354 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2355 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2357 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2356 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_68;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2358 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2359 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2360 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2361 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2362 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2358 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2359 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2360 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2361 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2363 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2362 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_70;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2364 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2365 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2366 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2367 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2114 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2368 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2364 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2365 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2366 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2367 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2369 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2368 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_71;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2370 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2371 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2372 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2373 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2107 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2374 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2370 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2371 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2372 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2373 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2375 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2374 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_73;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2376 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2377 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2378 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2379 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2114 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2380 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2376 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2377 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2378 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2379 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2381 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2380 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_76;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2382 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2383 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2384 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2385 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2386 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2382 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2383 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2384 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2385 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2387 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2386 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_77;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2388 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2389 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2390 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2391 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2114 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2392 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2388 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2389 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2390 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2391 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2393 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2392 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_78;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2394 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2395 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2396 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2397 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2121 epsilon_m_q2_pknows_old X4).
Defined.

Remark rem_2398 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2394 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2395 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2396 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2397 epsilon_m_q2_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2399 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2398 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_79;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2400 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2201 epsilon_m_q2_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_81;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2401 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 (nonceb_old X1 X2 X3 X4) -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_423 X1 X2 X3 X4 H);  intros.
  apply (rem_2209 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2215 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2221 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2222 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2228 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2234 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2240 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2246 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2247 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2253 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2259 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2260 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2266 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2272 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2278 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2284 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2290 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2296 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2302 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2308 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2314 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2320 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2326 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2332 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2338 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2344 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2345 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2351 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2357 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2363 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2369 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2375 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2381 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2387 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2393 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2399 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2400 epsilon_m_q2_pknows_old X1 X2 X3 X4);  tauto.
Defined.

Remark rem_2402 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2403 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2404 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2405 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_2402 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2403 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2404 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2406 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2405 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_1;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2407 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2408 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2409 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2410 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_2407 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2408 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2409 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2411 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2410 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_2;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2412 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2413 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2414 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2415 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_2412 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2413 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2414 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2416 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2415 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_3;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2417 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2418 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2419 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2420 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_2417 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2418 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2419 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2421 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2420 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_4;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2422 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2423 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2424 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2425 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_2422 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2423 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2424 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2426 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2425 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_5;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2427 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2028 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_6;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2428 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2429 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2430 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2431 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_2428 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2429 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2430 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2432 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2431 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_7;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2433 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2033 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_8;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2434 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1997 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_9;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2435 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2436 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2437 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2438 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_2435 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2436 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2437 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2439 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2438 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_10;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2440 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2441 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2442 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2443 : (forall X:term, auto__q2 X -> auto_knows_old 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_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_2440 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2441 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2442 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2444 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2443 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_11;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2445 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2039 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_12;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2446 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2044 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_13;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2447 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1991 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2448 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2449 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2450 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_2447 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2448 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2449 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2451 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2450 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_14;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2452 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2004 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_15;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2453 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2050 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_16;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2454 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2055 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_17;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2455 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2456 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2457 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2458 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_2455 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2456 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2457 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2459 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2458 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_18;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2460 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2461 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2462 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2463 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_2460 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2461 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2462 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2464 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2463 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_19;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2465 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2060 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_20;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2466 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2017 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2467 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2000 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2468 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2469 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_2466 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2467 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2468 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2470 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2469 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_21;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2471 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2472 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2473 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2026 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2474 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_2471 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2472 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2473 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2475 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2474 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_22;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2476 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2010 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_23;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2477 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2065 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_24;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2478 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2479 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1993 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2480 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2002 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2481 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_2478 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2479 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2480 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2482 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2481 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_25;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2483 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2023 epsilon_m_q2_pknows_old X1).
Defined.

Remark rem_2484 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2007 epsilon_m_q2_pknows_old X2).
Defined.

Remark rem_2485 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1995 epsilon_m_q2_pknows_old X3).
Defined.

Remark rem_2486 : (forall X:term, auto__q2 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_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_2483 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2484 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2485 epsilon_m_q2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2487 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2486 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_26;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2488 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2070 epsilon_m_q2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_27;  tauto.
 clear  epsilon_m_q2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2489 : (forall X:term, auto__q2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 (session_old X1 X2 X3) -> auto_knows_old (session_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_512 X1 X2 X3 H);  intros.
  apply (rem_2406 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2411 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2416 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2421 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2426 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2427 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2432 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2433 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2434 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2439 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2444 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2445 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2446 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2451 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2452 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2453 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2454 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2459 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2464 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2465 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2470 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2475 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2476 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2477 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2482 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2487 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
  apply (rem_2488 epsilon_m_q2_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_2490 : forall X1:term, auto__q2 X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_m_q2_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_518  H).
   intro H. elim (rem_516  H).
  intros X1 X2;  exact (rem_2088 epsilon_m_q2_pknows_old X1 X2).
  intros X1 X2;  exact (rem_2022 epsilon_m_q2_pknows_old X1 X2).
  exact (rem_2075 epsilon_m_q2_pknows_old ).
  intros X1 X2;  exact (rem_2101 epsilon_m_q2_pknows_old X1 X2).
   intro H. elim (rem_515  H).
  intros X1 X2 X3;  exact (rem_2072 epsilon_m_q2_pknows_old X1 X2 X3).
  intros X1 X2 X3;  exact (rem_2012 epsilon_m_q2_pknows_old X1 X2 X3).
  intros X1 X2 X3 X4;  exact (rem_2203 epsilon_m_q2_pknows_old X1 X2 X3 X4).
  intros X1 X2 X3 X4;  exact (rem_2401 epsilon_m_q2_pknows_old X1 X2 X3 X4).
  exact (rem_2090 epsilon_m_q2_pknows_old ).
   intro H. elim (rem_519  H).
  intros X1. intro H. elim (rem_514 X1 H).
   intro H. elim (rem_517  H).
  intros X1 X2 X3;  exact (rem_2489 epsilon_m_q2_pknows_old X1 X2 X3).
  exact (rem_2103 epsilon_m_q2_pknows_old ).
Qed.

Remark rem_2491 : forall X1 X2:term, auto__q2 X2 -> auto__q2 X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto_knows_old X1). tauto. exact (rem_2490 X1).
Qed.

Remark rem_2492 : (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_2493 : (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_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2494 : (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_2495 : (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_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2496 : (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_2497 : (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_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2498 : (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_2493 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2495 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2497 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2499 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2498 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_noncea_old_1;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2500 : (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_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2501 : (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_2502 : (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_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2503 : (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_2504 : (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_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2505 : (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_2500 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2502 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2504 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2506 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2505 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_noncea_old_2;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2507 : (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_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2508 : (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_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2509 : (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_2510 : (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_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2511 : (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_2507 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2508 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2510 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2512 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2511 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_noncea_old_3;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2513 : (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_2514 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2515 : (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_2516 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2515 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2517 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2518 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_2514 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2516 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2517 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2519 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2518 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_noncea_old_4;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2520 : (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_2521 : (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_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2522 : (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_2515 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2523 : (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_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2524 : (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_2521 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2522 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2523 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2525 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2524 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_noncea_old_5;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2526 : (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_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2527 : (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_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2528 : (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_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2529 : (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_2526 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2527 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2528 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2530 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2529 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_noncea_old_6;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2531 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2532 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2533 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2534 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_2531 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2532 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2533 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2535 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2534 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_noncea_old_7;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2536 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2537 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2538 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2539 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_2536 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2537 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2538 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2540 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2539 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_noncea_old_8;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2541 : (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_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2542 : (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_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2543 : (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_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2544 : (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_2541 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2542 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2543 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2545 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2544 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_noncea_old_10;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2546 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2547 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2548 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2549 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_2546 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2547 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2548 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2550 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2549 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_noncea_old_11;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2551 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2552 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2553 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2554 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_2551 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2552 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2553 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2555 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2554 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_noncea_old_12;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2556 : (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_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2557 : (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_2515 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2558 : (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_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2559 : (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_2556 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2557 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2558 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2560 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2559 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_noncea_old_13;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2561 : (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_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2562 : (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_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2563 : (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_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2564 : (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_2561 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2562 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2563 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2565 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2564 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_noncea_old_14;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2566 : (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_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2567 : (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_2515 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2568 : (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_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2569 : (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_2566 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2567 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2568 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2570 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2569 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_noncea_old_16;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2571 : (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_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2572 : (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_2515 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2573 : (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_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2574 : (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_2571 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2572 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2573 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2575 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2574 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_noncea_old_17;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2576 : (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_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2577 : (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_2515 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2578 : (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_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2579 : (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_2576 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2577 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2578 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2580 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2579 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_noncea_old_18;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2581 : (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_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2582 : (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_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2583 : (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_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2584 : (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_2581 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2582 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2583 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2585 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2584 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_noncea_old_19;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2586 : (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_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2587 : (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_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2588 : (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_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2589 : (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_2586 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2587 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2588 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2590 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2589 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_noncea_old_20;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2591 : (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_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2592 : (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_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2593 : (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_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2594 : (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_2591 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2592 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2593 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2595 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2594 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_noncea_old_21;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2596 : (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_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2597 : (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_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2598 : (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_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2599 : (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_2596 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2597 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2598 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2600 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2599 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_noncea_old_22;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2601 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2602 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2603 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2604 : (forall X:term, auto__q1 X -> auto_knows_old 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_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_2601 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2602 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2603 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2605 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2604 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_noncea_old_24;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2606 : (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_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2607 : (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_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2608 : (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_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2609 : (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_2606 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2607 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2608 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2610 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2609 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_noncea_old_25;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2611 : (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_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2612 : (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_2515 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2613 : (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_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2614 : (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_2611 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2612 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2613 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2615 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2614 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_noncea_old_26;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2616 : (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_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2617 : (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_2515 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2618 : (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_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2619 : (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_2616 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2617 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2618 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2620 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2619 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_noncea_old_27;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2621 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 (noncea_old X1 X2 X3) -> auto_knows_old (noncea_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_651 X1 X2 X3 H);  intros.
  apply (rem_2499 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2506 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2512 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2519 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2525 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2530 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2535 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2540 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2545 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2550 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2555 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2560 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2565 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2570 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2575 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2580 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2585 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2590 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2595 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2600 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2605 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2610 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2615 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2620 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_2622 : (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_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2623 : (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_2515 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2624 : (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_2622 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2623 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2625 : (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_2624 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_2626 : (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_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2627 : (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_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2628 : (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_2626 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2627 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2629 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 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_2628 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_2630 : (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_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2631 : (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_2515 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2632 : (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_2630 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2631 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2633 : (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_2632 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_crypt_5;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_2634 : (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_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2635 : (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_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2636 : (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_2634 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2635 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2637 : (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_2636 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_2638 : (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_669 X1 X2 H);  intros.
  apply (rem_2625 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_2629 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_2633 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_2637 epsilon_m_q1_pknows_old X1 X2);  tauto.
Defined.

Remark rem_2639 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2524 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_noncea_current_1;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2640 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2564 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_noncea_current_7;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2641 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 (noncea_current X1 X2 X3) -> auto_knows_old (noncea_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_673 X1 X2 X3 H);  intros.
  apply (rem_2639 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_2640 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_2642 : (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_2492 epsilon_m_q1_pknows_old X1);  assumption.
  tauto.
Defined.

Remark rem_2643 : (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_2642 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_2644 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1:term, auto__q2 X1 -> auto__q2 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1. intros A1.
  cut (auto__q2 X1). 2:apply (rem_2513 epsilon_m_q1_pknows_old X1);  assumption.
  tauto.
Defined.

Remark rem_2645 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1:term, auto__q2 X1 -> auto_knows_old (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1. intros A1.
  case (rem_2644 epsilon_m_q1_pknows_old X1 A1). clear  epsilon_m_q1_pknows_old A1. intros. apply trans_knows_old_s_2;  tauto.
 clear  epsilon_m_q1_pknows_old A1. tauto.
Defined.

Remark rem_2646 : (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_679 X1 H);  intros.
  apply (rem_2643 epsilon_m_q1_pknows_old X1);  tauto.
  apply (rem_2645 epsilon_m_q1_pknows_old X1);  tauto.
Defined.

Remark rem_2647 : (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_2648 : (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_2647 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_2649 : (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_683 H);  intros.
  apply (rem_2648 epsilon_m_q1_pknows_old);  tauto.
Defined.

Remark rem_2650 : (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_2647 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_2651 : (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_686 H);  intros.
  apply (rem_2650 epsilon_m_q1_pknows_old);  tauto.
Defined.

Remark rem_2652 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 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_2632 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_cons_3;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_2653 : (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_689 X1 X2 H);  intros.
  apply (rem_2652 epsilon_m_q1_pknows_old X1 X2);  tauto.
Defined.

Remark rem_2654 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto_knows_old intruder. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old.  case (rem_2647 epsilon_m_q1_pknows_old). clear  epsilon_m_q1_pknows_old. intros. apply trans_knows_old_intruder_1;  tauto.
 clear  epsilon_m_q1_pknows_old. tauto.
Defined.

Remark rem_2655 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto__q1 intruder -> auto_knows_old intruder. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intro H. intros.
  elim (rem_692 H);  intros.
  apply (rem_2654 epsilon_m_q1_pknows_old);  tauto.
Defined.

Remark rem_2656 : (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_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2657 : (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_2515 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2658 : (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_2656 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2657 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2659 : (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_2658 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_2660 : (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_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2661 : (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_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2662 : (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_2660 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2661 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2663 : (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_2662 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_2664 : (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_2636 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_2665 : (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_703 X1 X2 H);  intros.
  apply (rem_2659 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_2663 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_2664 epsilon_m_q1_pknows_old X1 X2);  tauto.
Defined.

Remark rem_2666 : (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_2647 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_2667 : (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_706 H);  intros.
  apply (rem_2666 epsilon_m_q1_pknows_old);  tauto.
Defined.

Remark rem_2668 : (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_2647 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_2669 : (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_709 H);  intros.
  apply (rem_2668 epsilon_m_q1_pknows_old);  tauto.
Defined.

Remark rem_2670 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2671 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2672 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2673 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X4:term, auto__q2 X4 -> auto__q2 X4. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2674 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2675 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2670 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2671 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2672 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2674 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2676 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2675 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_1;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2677 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2678 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2679 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2680 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X4:term, auto__q3 X4 -> auto__q3 X4. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2681 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2682 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2677 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2678 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2679 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2681 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2683 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2682 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_3;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2684 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2685 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2686 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2687 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X4:term, auto__q1 X4 -> auto__q1 X4. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2688 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2689 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2684 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2685 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2686 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2688 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2690 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2689 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_4;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2691 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2692 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2693 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2694 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2695 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2691 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2692 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2693 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2694 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2696 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2695 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_6;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2697 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2698 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2699 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2700 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2701 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2697 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2698 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2699 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2700 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2702 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2701 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_9;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2703 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2704 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2705 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2706 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2707 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2703 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2704 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2705 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2706 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2708 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2707 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_12;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2709 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2710 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2711 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2712 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2713 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2709 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2710 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2711 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2712 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2714 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2713 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_16;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2715 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2716 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2717 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2718 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2719 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2715 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2716 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2717 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2718 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2720 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2719 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_17;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2721 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2722 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2723 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2724 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2725 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2721 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2722 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2723 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2724 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2726 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2725 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_18;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2727 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2728 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2729 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2730 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2731 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2727 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2728 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2729 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2730 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2732 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2731 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_19;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2733 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2734 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2735 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2736 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2737 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2733 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2734 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2735 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2736 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2738 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2737 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_21;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2739 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2740 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2741 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2742 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2743 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2739 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2740 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2741 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2742 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2744 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2743 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_23;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2745 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2746 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2747 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2748 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2749 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2745 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2746 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2747 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2748 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2750 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2749 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_25;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2751 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 (nonceb_current X1 X2 X3 X4) -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_792 X1 X2 X3 X4 H);  intros.
  apply (rem_2676 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2683 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2690 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2696 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2702 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2708 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2714 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2720 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2726 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2732 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2738 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2744 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2750 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
Defined.

Remark rem_2752 : (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_2647 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_2753 : (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_795 H);  intros.
  apply (rem_2752 epsilon_m_q1_pknows_old);  tauto.
Defined.

Remark rem_2754 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2755 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2756 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2757 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2758 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2754 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2755 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2756 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2757 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2759 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2758 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_5;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2760 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2682 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_6;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2761 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2762 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2763 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2764 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2765 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2761 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2762 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2763 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2764 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2766 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2765 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_7;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2767 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2768 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2769 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2770 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2771 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2767 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2768 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2769 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2770 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2772 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2771 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_8;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2773 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2774 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2775 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2776 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2777 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2773 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2774 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2775 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2776 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2778 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2777 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_10;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2779 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2689 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_12;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2780 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2781 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2782 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2783 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2784 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2780 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2781 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2782 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2783 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2785 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2784 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_13;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2786 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2787 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2788 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2789 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2790 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2786 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2787 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2788 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2789 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2791 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2790 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_14;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2792 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2695 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_18;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2793 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2794 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2795 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2796 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2797 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2793 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2794 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2795 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2796 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2798 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2797 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_23;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2799 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2800 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2801 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2802 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2803 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2799 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2800 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2801 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2802 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2804 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2803 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_26;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2805 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2701 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_27;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2806 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2807 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2808 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2809 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2810 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2806 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2807 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2808 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2809 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2811 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2810 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_29;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2812 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2813 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2814 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2815 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2816 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2812 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2813 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2814 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2815 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2817 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2816 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_30;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2818 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2819 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2820 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2821 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2822 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2818 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2819 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2820 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2821 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2823 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2822 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_31;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2824 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2825 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2826 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2827 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2828 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2824 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2825 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2826 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2827 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2829 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2828 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_32;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2830 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2831 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2832 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2833 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2834 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2830 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2831 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2832 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2833 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2835 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2834 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_33;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2836 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2837 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2838 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2839 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2840 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2836 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2837 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2838 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2839 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2841 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2840 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_34;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2842 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2707 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_35;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2843 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2844 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2845 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2846 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2847 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2843 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2844 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2845 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2846 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2848 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2847 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_36;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2849 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2850 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2851 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2852 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2853 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2849 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2850 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2851 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2852 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2854 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2853 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_38;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2855 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2856 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2857 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2858 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2859 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2855 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2856 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2857 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2858 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2860 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2859 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_39;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2861 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2862 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2863 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2864 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2865 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2861 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2862 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2863 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2864 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2866 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2865 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_40;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2867 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2868 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2869 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2870 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2871 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2867 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2868 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2869 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2870 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2872 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2871 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_41;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2873 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2874 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2875 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2876 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2877 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2873 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2874 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2875 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2876 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2878 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2877 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_43;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2879 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2880 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2881 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2882 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2883 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2879 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2880 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2881 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2882 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2884 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2883 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_44;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2885 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2886 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2887 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2888 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2889 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2885 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2886 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2887 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2888 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2890 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2889 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_47;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2891 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2892 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2893 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2894 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2895 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2891 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2892 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2893 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2894 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2896 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2895 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_48;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2897 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2898 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2899 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2900 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2901 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2897 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2898 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2899 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2900 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2902 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2901 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_51;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2903 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2904 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2905 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2906 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2907 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2903 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2904 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2905 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2906 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2908 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2907 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_53;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2909 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2725 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_55;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2910 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2731 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_56;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2911 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2912 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2913 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2914 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2915 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2911 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2912 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2913 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2914 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2916 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2915 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_57;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2917 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2918 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2919 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2920 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2921 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2917 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2918 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2919 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2920 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2922 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2921 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_58;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2923 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2737 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_59;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2924 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2925 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2926 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2927 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2928 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2924 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2925 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2926 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2927 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2929 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2928 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_61;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2930 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2743 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_62;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2931 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2492 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2932 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2933 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2934 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2935 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_2931 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2932 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2933 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2934 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2936 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2935 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_65;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2937 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2938 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2939 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2940 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_2673 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2941 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2937 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2938 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2939 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_2940 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2942 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2941 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_66;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2943 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2749 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_69;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2944 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2945 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2946 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2947 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2948 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2944 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2945 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2946 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2947 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2949 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2948 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_72;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2950 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2520 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2951 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2952 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_2509 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2953 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_2680 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2954 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_2950 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2951 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_2952 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_2953 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2955 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2954 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_74;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2956 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2957 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_2494 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2958 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2503 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2959 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2960 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2956 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2957 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2958 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2959 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2961 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2960 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_75;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2962 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2513 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2963 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2501 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2964 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_2496 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_2965 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_2687 epsilon_m_q1_pknows_old X4).
Defined.

Remark rem_2966 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_2962 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2963 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_2964 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_2965 epsilon_m_q1_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_2967 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2966 epsilon_m_q1_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_80;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_2968 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 (nonceb_old X1 X2 X3 X4) -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1011 X1 X2 X3 X4 H);  intros.
  apply (rem_2759 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2760 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2766 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2772 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2778 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2779 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2785 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2791 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2792 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2798 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2804 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2805 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2811 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2817 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2823 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2829 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2835 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2841 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2842 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2848 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2854 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2860 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2866 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2872 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2878 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2884 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2890 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2896 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2902 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2908 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2909 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2910 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2916 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2922 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2923 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2929 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2930 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2936 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2942 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2943 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2949 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2955 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2961 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_2967 epsilon_m_q1_pknows_old X1 X2 X3 X4);  tauto.
Defined.

Remark rem_2969 : 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_2669 epsilon_m_q1_pknows_old ).
  exact (rem_2651 epsilon_m_q1_pknows_old ).
  intros X1 X2;  exact (rem_2653 epsilon_m_q1_pknows_old X1 X2).
  intros X1 X2;  exact (rem_2638 epsilon_m_q1_pknows_old X1 X2).
   intro H. elim (rem_1013  H).
  intros X1 X2;  exact (rem_2665 epsilon_m_q1_pknows_old X1 X2).
  exact (rem_2649 epsilon_m_q1_pknows_old ).
  intros X1 X2 X3;  exact (rem_2641 epsilon_m_q1_pknows_old X1 X2 X3).
  intros X1 X2 X3;  exact (rem_2621 epsilon_m_q1_pknows_old X1 X2 X3).
  intros X1 X2 X3 X4;  exact (rem_2751 epsilon_m_q1_pknows_old X1 X2 X3 X4).
  intros X1 X2 X3 X4;  exact (rem_2968 epsilon_m_q1_pknows_old X1 X2 X3 X4).
   intro H. elim (rem_1014  H).
  exact (rem_2753 epsilon_m_q1_pknows_old ).
  intros X1;  exact (rem_2646 epsilon_m_q1_pknows_old X1).
  exact (rem_2667 epsilon_m_q1_pknows_old ).
  intros X1 X2 X3. intro H. elim (rem_1016 X1 X2 X3 H).
   intro H. elim (rem_1015  H).
Qed.

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

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

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

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

Remark rem_2974 : forall X1 X2:term, auto_knows_old (cons X1 X2) -> or_4
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q1 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_2975 : forall X1 X2:term, auto_knows_old (cons X2 X1) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_2974 X2 X1 H);  intros.
  apply (rem_2491 X1 X2);  tauto.
  apply (rem_2971 X1 X2);  tauto.
  apply (rem_2972 X1 X2);  tauto.
  apply (rem_2973 X1 X2);  tauto.
Qed.

Remark rem_2976 : forall _big_m1 _big_m2:term, auto_knows_old (cons _big_m1 _big_m2) -> auto_knows_old _big_m2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto_knows_old (cons X2 X1) -> auto_knows_old X1). tauto. exact (rem_2975 X1 X2).
Qed.

Remark rem_2977 : forall X3:term, auto__q1 X3 \/ auto__q3 X3 \/ auto__q2 X3. (* Check universal disjunction. *)
Proof.
 induction X3;  intuition auto with h1mc_states_hint.
Qed.

Remark rem_2978 : forall X2:term, auto__q1 X2 \/ auto__q3 X2 \/ auto__q2 X2. (* Check universal disjunction. *)
Proof.
 induction X2;  intuition auto with h1mc_states_hint.
Qed.

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

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

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

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

Remark rem_2983 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> (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_2979 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2980 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2982 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_2984 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2983 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_10;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_2985 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_2984 X1 X2 X3).
Qed.

Remark rem_2986 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 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_1081 X1).
Qed.

Remark rem_2987 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 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_1047 X2).
Qed.

Remark rem_2988 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 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_2981 X3).
Qed.

Remark rem_2989 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> 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_2986 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2987 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2988 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_2990 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2989 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_12;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_2991 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_2990 X1 X2 X3).
Qed.

Remark rem_2992 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> 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_1045 X1).
Qed.

Remark rem_2993 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> 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_1047 X2).
Qed.

Remark rem_2994 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> 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_2981 X3).
Qed.

Remark rem_2995 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> 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_2992 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_2993 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2994 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_2996 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2995 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_22;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

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

Hint Constructors or_3 : or_3_hint.

Remark rem_2998 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_2985 X1 X2 X3)). tauto.
  assert (HH:=(rem_2991 X1 X2 X3)). tauto.
  assert (HH:=(rem_2997 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_2999 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_2998 X1 X2 X3).
Qed.

Remark rem_3000 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> 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_1057 X1).
Qed.

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

Remark rem_3002 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 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_3001 X2).
Qed.

Remark rem_3003 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 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_2981 X3).
Qed.

Remark rem_3004 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> 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_3000 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3002 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3003 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3005 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3004 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3006 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3005 X1 X2 X3).
Qed.

Remark rem_3007 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 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_1081 X1).
Qed.

Remark rem_3008 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3009 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 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_2981 X3).
Qed.

Remark rem_3010 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> (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_3007 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3008 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3009 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3011 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3010 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_24;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3012 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3011 X1 X2 X3).
Qed.

Remark rem_3013 : 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_1045 X1).
Qed.

Remark rem_3014 : 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_3001 X2).
Qed.

Remark rem_3015 : 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_2981 X3).
Qed.

Remark rem_3016 : 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_3013 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3014 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3015 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3017 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3016 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3018 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (noncea_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 (noncea_old X1 X2 X3)). tauto. exact (rem_3017 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3019 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3006 X1 X2 X3)). tauto.
  assert (HH:=(rem_3012 X1 X2 X3)). tauto.
  assert (HH:=(rem_3018 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3020 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3019 X1 X2 X3).
Qed.

Remark rem_3021 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> 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_1057 X1).
Qed.

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

Remark rem_3023 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 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_3022 X2).
Qed.

Remark rem_3024 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 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_2981 X3).
Qed.

Remark rem_3025 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> 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_3021 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3023 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3024 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3026 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3025 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_16;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

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

Remark rem_3028 : 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_1081 X1).
Qed.

Remark rem_3029 : 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_3022 X2).
Qed.

Remark rem_3030 : 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_2981 X3).
Qed.

Remark rem_3031 : 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_3028 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3029 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3030 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3032 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3031 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_13;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3033 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto_knows_current (noncea_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 (noncea_old X1 X2 X3)). tauto. exact (rem_3032 X1 X2 X3).
Qed.

Remark rem_3034 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> 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_1045 X1).
Qed.

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

Remark rem_3036 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> 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_2981 X3).
Qed.

Remark rem_3037 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> (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_3034 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3035 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3036 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3038 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3037 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

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

Hint Constructors or_3 : or_3_hint.

Remark rem_3040 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3027 X1 X2 X3)). tauto.
  assert (HH:=(rem_3033 X1 X2 X3)). tauto.
  assert (HH:=(rem_3039 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

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

Hint Constructors or_3 : or_3_hint.

Remark rem_3042 : forall X1 X2 X3:term, auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_2999 X1 X2 X3)). tauto.
  assert (HH:=(rem_3020 X1 X2 X3)). tauto.
  assert (HH:=(rem_3041 X1 X2 X3)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Remark rem_3043 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> 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_1057 X1).
Qed.

Remark rem_3044 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 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_1047 X2).
Qed.

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

Remark rem_3046 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 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_3045 X3).
Qed.

Remark rem_3047 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> 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_3043 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3044 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3046 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3048 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3047 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_19;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3049 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3048 X1 X2 X3).
Qed.

Remark rem_3050 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 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_1081 X1).
Qed.

Remark rem_3051 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 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_1047 X2).
Qed.

Remark rem_3052 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3053 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> (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_3050 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3051 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3052 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3054 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3053 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_9;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3055 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3054 X1 X2 X3).
Qed.

Remark rem_3056 : 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_1045 X1).
Qed.

Remark rem_3057 : 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_1047 X2).
Qed.

Remark rem_3058 : 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_3045 X3).
Qed.

Remark rem_3059 : 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_3056 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3057 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3058 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3060 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3059 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_20;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3061 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_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 (noncea_old X1 X2 X3)). tauto. exact (rem_3060 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3062 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3049 X1 X2 X3)). tauto.
  assert (HH:=(rem_3055 X1 X2 X3)). tauto.
  assert (HH:=(rem_3061 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3063 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 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_1057 X1).
Qed.

Remark rem_3064 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 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_3001 X2).
Qed.

Remark rem_3065 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3066 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> (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_3063 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3064 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3065 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3067 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3066 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3068 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 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_1081 X1).
Qed.

Remark rem_3069 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3070 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3071 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> (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_3068 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3069 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3070 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3072 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3071 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_14;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3073 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3072 X1 X2 X3).
Qed.

Remark rem_3074 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 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_1045 X1).
Qed.

Remark rem_3075 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 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_3001 X2).
Qed.

Remark rem_3076 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3077 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> (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_3074 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3075 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3076 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3078 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3077 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_7;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3079 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3067 X1 X2 X3)). tauto.
  assert (HH:=(rem_3073 X1 X2 X3)). tauto.
  assert (HH:=(rem_3078 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3080 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3079 X1 X2 X3).
Qed.

Remark rem_3081 : 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_1057 X1).
Qed.

Remark rem_3082 : 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_3022 X2).
Qed.

Remark rem_3083 : 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_3045 X3).
Qed.

Remark rem_3084 : 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_3081 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3082 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3083 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3085 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3084 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_18;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3086 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 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_1081 X1).
Qed.

Remark rem_3087 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 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_3022 X2).
Qed.

Remark rem_3088 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3089 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> (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_3086 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3087 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3088 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3090 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3089 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_23;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3091 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3090 X1 X2 X3).
Qed.

Remark rem_3092 : forall X1 X2 X3:term, auto__q2 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_1045 X1).
Qed.

Remark rem_3093 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 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_3022 X2).
Qed.

Remark rem_3094 : forall X1 X2 X3:term, auto__q2 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_3045 X3).
Qed.

Remark rem_3095 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X1 -> 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_3092 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3093 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3094 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3096 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3095 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_26;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3097 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3096 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3098 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3085 X1 X2 X3)). tauto.
  assert (HH:=(rem_3091 X1 X2 X3)). tauto.
  assert (HH:=(rem_3097 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3099 : forall X1 X2 X3:term, auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_3062 X1 X2 X3)). tauto.
  assert (HH:=(rem_3080 X1 X2 X3)). tauto.
  assert (HH:=(rem_3098 X1 X2 X3)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Remark rem_3100 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> 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_1057 X1).
Qed.

Remark rem_3101 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 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_1047 X2).
Qed.

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

Remark rem_3103 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 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_3102 X3).
Qed.

Remark rem_3104 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> 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_3100 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3101 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3103 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3105 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3104 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

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

Remark rem_3107 : 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_1081 X1).
Qed.

Remark rem_3108 : 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_1047 X2).
Qed.

Remark rem_3109 : 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_3102 X3).
Qed.

Remark rem_3110 : 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_3107 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3108 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3109 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3111 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3110 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_11;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3112 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (noncea_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 (noncea_old X1 X2 X3)). tauto. exact (rem_3111 X1 X2 X3).
Qed.

Remark rem_3113 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 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_1045 X1).
Qed.

Remark rem_3114 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 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_1047 X2).
Qed.

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

Remark rem_3116 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> (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_3113 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3114 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3115 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3117 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3116 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_25;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

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

Hint Constructors or_3 : or_3_hint.

Remark rem_3119 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3106 X1 X2 X3)). tauto.
  assert (HH:=(rem_3112 X1 X2 X3)). tauto.
  assert (HH:=(rem_3118 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3120 : 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_1057 X1).
Qed.

Remark rem_3121 : 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_3001 X2).
Qed.

Remark rem_3122 : 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_3102 X3).
Qed.

Remark rem_3123 : 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_3120 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3121 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3122 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3124 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3123 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_21;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3125 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 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_1081 X1).
Qed.

Remark rem_3126 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3127 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> 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_3102 X3).
Qed.

Remark rem_3128 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> (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_3125 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3126 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3127 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3129 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3128 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_15;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3130 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3129 X1 X2 X3).
Qed.

Remark rem_3131 : forall X1 X2 X3:term, auto__q2 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_1045 X1).
Qed.

Remark rem_3132 : forall X1 X2 X3:term, auto__q2 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_3001 X2).
Qed.

Remark rem_3133 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 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_3102 X3).
Qed.

Remark rem_3134 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X1 -> 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_3131 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3132 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3133 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3135 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3134 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_8;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3136 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3135 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3137 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3124 X1 X2 X3)). tauto.
  assert (HH:=(rem_3130 X1 X2 X3)). tauto.
  assert (HH:=(rem_3136 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3138 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3137 X1 X2 X3).
Qed.

Remark rem_3139 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 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_1057 X1).
Qed.

Remark rem_3140 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 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_3022 X2).
Qed.

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

Remark rem_3142 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> (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_3139 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3140 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3141 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3143 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3142 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_27;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3144 : forall X1 X2 X3:term, auto__q2 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_1081 X1).
Qed.

Remark rem_3145 : forall X1 X2 X3:term, auto__q2 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_3022 X2).
Qed.

Remark rem_3146 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> 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_3102 X3).
Qed.

Remark rem_3147 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> 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_3144 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3145 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3146 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3148 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3147 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3149 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3148 X1 X2 X3).
Qed.

Remark rem_3150 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> 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_1045 X1).
Qed.

Remark rem_3151 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3152 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3153 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> (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_3150 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3151 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3152 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3154 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3153 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_noncea_old_17;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3155 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3154 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3156 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3143 X1 X2 X3)). tauto.
  assert (HH:=(rem_3149 X1 X2 X3)). tauto.
  assert (HH:=(rem_3155 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3157 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3156 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3158 : forall X1 X2 X3:term, auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_3119 X1 X2 X3)). tauto.
  assert (HH:=(rem_3138 X1 X2 X3)). tauto.
  assert (HH:=(rem_3157 X1 X2 X3)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3159 : forall X1 X2 X3:term, auto_knows_current (noncea_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X3) (auto__q3 X3) (auto__q2 X3)). intro H. elim H.
  assert (HH:=(rem_3042 X1 X2 X3)). tauto.
  assert (HH:=(rem_3099 X1 X2 X3)). tauto.
  assert (HH:=(rem_3158 X1 X2 X3)). tauto.
  assert (HH:=(rem_2977 X3)). intuition auto with or_3_hint.
Qed.

Remark rem_3160 : forall _big_a _big_b _big_kPb:term, auto_knows_current (noncea_old _big_a _big_b _big_kPb). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_knows_current (noncea_old X1 X2 X3)). tauto. exact (rem_3159 X1 X2 X3).
Qed.

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

Remark rem_3162 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3161 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_3163 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2983 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_10;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3164 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> (auto__q2 sym /\ auto__q2 (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_3162 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3163 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3165 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 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_3164 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3166 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 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__q1 X2 -> auto__q1 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3165 X1 X2 X3).
Qed.

Remark rem_3167 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3168 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3167 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_3169 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2989 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_12;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3170 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> (auto__q2 sym /\ auto__q2 (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_3168 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3169 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3171 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 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_3170 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3172 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X3 -> auto__q1 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__q1 X2 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3171 X1 X2 X3).
Qed.

Remark rem_3173 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3174 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3173 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_3175 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2995 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_22;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3176 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> (auto__q2 sym /\ auto__q2 (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_3174 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3175 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3177 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> 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_3176 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3178 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 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__q1 X2 -> auto__q2 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3177 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3179 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3166 X1 X2 X3)). tauto.
  assert (HH:=(rem_3172 X1 X2 X3)). tauto.
  assert (HH:=(rem_3178 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3180 : forall X1 X2 X3:term, 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 X3 -> auto__q1 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3179 X1 X2 X3).
Qed.

Remark rem_3181 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3182 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3181 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_3183 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3004 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3184 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> (auto__q2 sym /\ auto__q2 (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_3182 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3183 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3185 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 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_3184 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3186 : forall X1 X2 X3:term, auto__q1 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__q1 X1 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3185 X1 X2 X3).
Qed.

Remark rem_3187 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3188 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3187 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_3189 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3010 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_24;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3190 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> (auto__q2 sym /\ auto__q2 (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_3188 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3189 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3191 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 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_3190 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3192 : 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 X2 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3191 X1 X2 X3).
Qed.

Remark rem_3193 : 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_3194 : 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_3193 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_3195 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3016 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3196 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q2 sym /\ auto__q2 (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_3194 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3195 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3197 : 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_3196 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3198 : 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_3197 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3199 : 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_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3186 X1 X2 X3)). tauto.
  assert (HH:=(rem_3192 X1 X2 X3)). tauto.
  assert (HH:=(rem_3198 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3200 : 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_3199 X1 X2 X3).
Qed.

Remark rem_3201 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3202 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3201 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_3203 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3025 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_16;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3204 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> (auto__q2 sym /\ auto__q2 (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_3202 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3203 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3205 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 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_3204 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3206 : forall X1 X2 X3:term, auto__q1 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__q1 X1 -> auto__q2 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3205 X1 X2 X3).
Qed.

Remark rem_3207 : 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_3208 : 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_3207 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_3209 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3031 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_13;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3210 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> (auto__q2 sym /\ auto__q2 (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_3208 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3209 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3211 : 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_3210 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3212 : 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_3211 X1 X2 X3).
Qed.

Remark rem_3213 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3214 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3213 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_3215 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3037 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3216 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> (auto__q2 sym /\ auto__q2 (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_3214 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3215 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3217 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> 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_3216 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3218 : 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 X2 -> auto__q2 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3217 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3219 : 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_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3206 X1 X2 X3)). tauto.
  assert (HH:=(rem_3212 X1 X2 X3)). tauto.
  assert (HH:=(rem_3218 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3220 : 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_3219 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3221 : 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_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_3180 X1 X2 X3)). tauto.
  assert (HH:=(rem_3200 X1 X2 X3)). tauto.
  assert (HH:=(rem_3220 X1 X2 X3)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Remark rem_3222 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3223 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3222 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_3224 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3047 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_19;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3225 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> (auto__q2 sym /\ auto__q2 (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_3223 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3224 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3226 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 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_3225 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3227 : forall X1 X2 X3:term, auto__q1 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__q1 X1 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3226 X1 X2 X3).
Qed.

Remark rem_3228 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3229 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3228 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_3230 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3053 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_9;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3231 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> (auto__q2 sym /\ auto__q2 (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_3229 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3230 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3232 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 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_3231 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3233 : 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 X3 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3232 X1 X2 X3).
Qed.

Remark rem_3234 : 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_3235 : 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_3234 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_3236 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3059 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_20;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3237 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q2 sym /\ auto__q2 (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_3235 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3236 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3238 : 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_3237 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3239 : 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_3238 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3240 : 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_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3227 X1 X2 X3)). tauto.
  assert (HH:=(rem_3233 X1 X2 X3)). tauto.
  assert (HH:=(rem_3239 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3241 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3242 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3241 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_3243 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3066 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3244 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> (auto__q2 sym /\ auto__q2 (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_3242 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3243 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3245 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 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_3244 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

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

Remark rem_3247 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3246 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_3248 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3071 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_14;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3249 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> (auto__q2 sym /\ auto__q2 (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_3247 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3248 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3250 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 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_3249 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3251 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 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__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3250 X1 X2 X3).
Qed.

Remark rem_3252 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3253 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3252 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_3254 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3077 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_7;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3255 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> (auto__q2 sym /\ auto__q2 (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_3253 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3254 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3256 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 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_3255 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3257 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3245 X1 X2 X3)). tauto.
  assert (HH:=(rem_3251 X1 X2 X3)). tauto.
  assert (HH:=(rem_3256 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3258 : forall X1 X2 X3:term, 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 X3 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3257 X1 X2 X3).
Qed.

Remark rem_3259 : 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_3260 : 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_3259 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_3261 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3084 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_18;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3262 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q2 sym /\ auto__q2 (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_3260 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3261 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3263 : 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_3262 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3264 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3265 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3264 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_3266 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3089 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_23;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3267 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> (auto__q2 sym /\ auto__q2 (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_3265 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3266 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3268 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 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_3267 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3269 : 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 X3 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3268 X1 X2 X3).
Qed.

Remark rem_3270 : forall X1 X2 X3:term, auto__q2 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_3271 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3270 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_3272 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3095 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_26;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3273 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q2 sym /\ auto__q2 (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_3271 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3272 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3274 : forall X1 X2 X3:term, auto__q2 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_3273 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3275 : forall X1 X2 X3:term, auto__q2 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__q2 X1 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3274 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3276 : 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_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3263 X1 X2 X3)). tauto.
  assert (HH:=(rem_3269 X1 X2 X3)). tauto.
  assert (HH:=(rem_3275 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3277 : 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_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_3240 X1 X2 X3)). tauto.
  assert (HH:=(rem_3258 X1 X2 X3)). tauto.
  assert (HH:=(rem_3276 X1 X2 X3)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Remark rem_3278 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3279 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3278 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_3280 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3104 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3281 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> (auto__q2 sym /\ auto__q2 (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_3279 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3280 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3282 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 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_3281 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3283 : forall X1 X2 X3:term, auto__q1 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__q1 X1 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3282 X1 X2 X3).
Qed.

Remark rem_3284 : 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_3285 : 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_3284 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_3286 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3110 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_11;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3287 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> (auto__q2 sym /\ auto__q2 (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_3285 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3286 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3288 : 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_3287 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3289 : 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_3288 X1 X2 X3).
Qed.

Remark rem_3290 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3291 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3290 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_3292 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3116 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_25;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3293 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> (auto__q2 sym /\ auto__q2 (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_3291 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3292 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3294 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 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_3293 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3295 : 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 X3 -> auto__q2 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3294 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3296 : 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_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3283 X1 X2 X3)). tauto.
  assert (HH:=(rem_3289 X1 X2 X3)). tauto.
  assert (HH:=(rem_3295 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3297 : 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_3298 : 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_3297 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_3299 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3123 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_21;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3300 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> (auto__q2 sym /\ auto__q2 (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_3298 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3299 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3301 : 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_3300 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3302 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3303 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3302 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_3304 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3128 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_15;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3305 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> (auto__q2 sym /\ auto__q2 (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_3303 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3304 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3306 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 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_3305 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3307 : 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 X2 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3306 X1 X2 X3).
Qed.

Remark rem_3308 : forall X1 X2 X3:term, auto__q2 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_3309 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3308 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_3310 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3134 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_8;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3311 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q2 sym /\ auto__q2 (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_3309 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3310 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3312 : forall X1 X2 X3:term, auto__q2 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_3311 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3313 : forall X1 X2 X3:term, auto__q2 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__q2 X1 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3312 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3314 : 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_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3301 X1 X2 X3)). tauto.
  assert (HH:=(rem_3307 X1 X2 X3)). tauto.
  assert (HH:=(rem_3313 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3315 : 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_3314 X1 X2 X3).
Qed.

Remark rem_3316 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3317 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3316 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_3318 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3142 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_27;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3319 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> (auto__q2 sym /\ auto__q2 (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_3317 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3318 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3320 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 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_3319 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3321 : forall X1 X2 X3:term, auto__q2 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_3322 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3321 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_3323 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3147 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3324 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> (auto__q2 sym /\ auto__q2 (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_3322 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3323 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3325 : forall X1 X2 X3:term, auto__q2 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_3324 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3326 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 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__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3325 X1 X2 X3).
Qed.

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

Remark rem_3328 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3327 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_3329 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3153 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_session_old_17;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3330 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> (auto__q2 sym /\ auto__q2 (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_3328 X1 X2 X3);  assumption.
  cut (auto__q2 (session_old X1 X2 X3)). 2:apply (rem_3329 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3331 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> 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_3330 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3332 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 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__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3331 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3333 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3320 X1 X2 X3)). tauto.
  assert (HH:=(rem_3326 X1 X2 X3)). tauto.
  assert (HH:=(rem_3332 X1 X2 X3)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3334 : forall X1 X2 X3:term, 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 X3 -> auto__q2 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_3333 X1 X2 X3).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3335 : 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_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_3296 X1 X2 X3)). tauto.
  assert (HH:=(rem_3315 X1 X2 X3)). tauto.
  assert (HH:=(rem_3334 X1 X2 X3)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3336 : forall X1 X2 X3:term, auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_3 (auto__q1 X3) (auto__q3 X3) (auto__q2 X3)). intro H. elim H.
  assert (HH:=(rem_3221 X1 X2 X3)). tauto.
  assert (HH:=(rem_3277 X1 X2 X3)). tauto.
  assert (HH:=(rem_3335 X1 X2 X3)). tauto.
  assert (HH:=(rem_2977 X3)). intuition auto with or_3_hint.
Qed.

Remark rem_3337 : 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_3336 X1 X2 X3).
Qed.

Remark rem_3338 : forall X4:term, auto__q1 X4 \/ auto__q3 X4 \/ auto__q2 X4. (* Check universal disjunction. *)
Proof.
 induction X4;  intuition auto with h1mc_states_hint.
Qed.

Remark rem_3339 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3340 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3341 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

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

Remark rem_3343 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3344 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3339 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3340 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3341 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3343 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3345 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3344 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_8;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3346 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3345 X1 X2 X3 X4).
Qed.

Remark rem_3347 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3348 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3349 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3350 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3351 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3347 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3348 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3349 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3350 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3352 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3351 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_34;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3353 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3352 X1 X2 X3 X4).
Qed.

Remark rem_3354 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3355 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3356 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3357 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3358 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3354 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3355 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3356 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3357 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3359 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3358 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_75;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3360 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3359 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3361 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3346 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3353 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3360 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3362 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3361 X1 X2 X3 X4).
Qed.

Remark rem_3363 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3364 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3365 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3366 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3367 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3363 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3364 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3365 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3366 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3368 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3367 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_18;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3369 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3368 X1 X2 X3 X4).
Qed.

Remark rem_3370 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3371 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3372 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3373 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3374 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3370 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3371 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3372 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3373 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3375 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3374 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_52;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3376 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3375 X1 X2 X3 X4).
Qed.

Remark rem_3377 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3378 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3379 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3380 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3381 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3377 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3378 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3379 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3380 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3382 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3381 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_62;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3383 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3382 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3384 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3369 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3376 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3383 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3385 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3384 X1 X2 X3 X4).
Qed.

Remark rem_3386 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3387 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3388 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3389 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3390 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3386 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3387 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3388 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3389 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3391 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3390 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_71;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3392 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3391 X1 X2 X3 X4).
Qed.

Remark rem_3393 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3394 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3395 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3396 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3397 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3393 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3394 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3395 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3396 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3398 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3397 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_45;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3399 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3398 X1 X2 X3 X4).
Qed.

Remark rem_3400 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3401 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3402 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3403 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3404 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3400 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3401 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3402 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3403 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3405 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3404 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_37;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3406 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3405 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3407 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3392 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3399 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3406 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3408 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3407 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3409 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_3362 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3385 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3408 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Remark rem_3410 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3411 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3412 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3413 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3414 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3410 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3411 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3412 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3413 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3415 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3414 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_41;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3416 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3415 X1 X2 X3 X4).
Qed.

Remark rem_3417 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3418 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3419 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3420 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3421 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3417 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3418 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3419 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3420 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3422 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3421 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_10;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3423 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3422 X1 X2 X3 X4).
Qed.

Remark rem_3424 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3425 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3426 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3427 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3428 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3424 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3425 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3426 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3427 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3429 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3428 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_12;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3430 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3429 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3431 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3416 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3423 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3430 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3432 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3431 X1 X2 X3 X4).
Qed.

Remark rem_3433 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3434 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3435 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3436 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3437 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3433 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3434 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3435 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3436 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3438 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3437 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_35;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3439 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3438 X1 X2 X3 X4).
Qed.

Remark rem_3440 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3441 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3442 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3443 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3444 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3440 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3441 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3442 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3443 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3445 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3444 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_57;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3446 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3445 X1 X2 X3 X4).
Qed.

Remark rem_3447 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3448 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3449 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3450 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3451 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3447 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3448 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3449 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3450 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3452 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3451 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_58;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3453 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3452 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3454 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3439 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3446 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3453 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3455 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q1 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3454 X1 X2 X3 X4).
Qed.

Remark rem_3456 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3457 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3458 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3459 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3460 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3456 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3457 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3458 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3459 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3461 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3460 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_76;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3462 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3461 X1 X2 X3 X4).
Qed.

Remark rem_3463 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3464 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3465 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3466 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3467 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3463 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3464 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3465 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3466 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3468 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3467 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_60;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3469 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3468 X1 X2 X3 X4).
Qed.

Remark rem_3470 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3471 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3472 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3473 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3474 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3470 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3471 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3472 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3473 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3475 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3474 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_15;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3476 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3475 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3477 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3462 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3469 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3476 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3478 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3477 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3479 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_3432 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3455 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3478 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Remark rem_3480 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3479 X1 X2 X3 X4).
Qed.

Remark rem_3481 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3482 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3483 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3484 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3485 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3481 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3482 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3483 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3484 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3486 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3485 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_43;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3487 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3486 X1 X2 X3 X4).
Qed.

Remark rem_3488 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3489 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3490 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3491 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3492 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3488 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3489 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3490 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3491 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3493 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3492 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_55;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3494 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3493 X1 X2 X3 X4).
Qed.

Remark rem_3495 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3496 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3497 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3498 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3499 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3495 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3496 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3497 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3498 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3500 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3499 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_5;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3501 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3500 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3502 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3487 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3494 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3501 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3503 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X4 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3502 X1 X2 X3 X4).
Qed.

Remark rem_3504 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3505 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3506 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3507 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3508 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3504 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3505 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3506 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3507 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3509 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3508 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_17;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3510 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3509 X1 X2 X3 X4).
Qed.

Remark rem_3511 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3512 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3513 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3514 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3515 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3511 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3512 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3513 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3514 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3516 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3515 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_32;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3517 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3516 X1 X2 X3 X4).
Qed.

Remark rem_3518 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3519 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3520 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3521 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3522 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3518 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3519 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3520 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3521 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3523 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3522 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_80;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3524 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3523 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3525 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3510 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3517 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3524 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3526 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q1 X4 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3525 X1 X2 X3 X4).
Qed.

Remark rem_3527 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3528 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3529 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3530 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3531 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3527 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3528 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3529 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3530 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3532 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3531 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_78;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3533 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3532 X1 X2 X3 X4).
Qed.

Remark rem_3534 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3535 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3536 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3537 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3538 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3534 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3535 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3536 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3537 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3539 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3538 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_28;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3540 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3539 X1 X2 X3 X4).
Qed.

Remark rem_3541 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3542 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3543 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3544 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3545 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3541 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3542 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3543 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3544 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3546 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3545 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_25;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3547 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3546 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3548 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3533 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3540 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3547 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3549 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X4 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3548 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3550 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_3503 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3526 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3549 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Remark rem_3551 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3550 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3552 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X3) (auto__q3 X3) (auto__q2 X3)). intro H. elim H.
  assert (HH:=(rem_3409 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3480 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3551 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_2977 X3)). intuition auto with or_3_hint.
Qed.

Remark rem_3553 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3554 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3555 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

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

Remark rem_3557 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3558 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3553 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3554 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3555 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3557 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3559 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3558 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_51;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3560 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3559 X1 X2 X3 X4).
Qed.

Remark rem_3561 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3562 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3563 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3564 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3565 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3561 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3562 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3563 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3564 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3566 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3565 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_23;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3567 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3566 X1 X2 X3 X4).
Qed.

Remark rem_3568 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3569 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3570 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3571 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3572 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3568 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3569 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3570 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3571 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3573 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3572 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_38;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3574 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3573 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3575 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3560 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3567 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3574 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3576 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3575 X1 X2 X3 X4).
Qed.

Remark rem_3577 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3578 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3579 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3580 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3581 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3577 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3578 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3579 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3580 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3582 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3581 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_70;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3583 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3582 X1 X2 X3 X4).
Qed.

Remark rem_3584 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3585 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3586 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3587 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3588 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3584 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3585 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3586 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3587 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3589 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3588 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_47;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3590 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3589 X1 X2 X3 X4).
Qed.

Remark rem_3591 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3592 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3593 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3594 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3595 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3591 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3592 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3593 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3594 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3596 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3595 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_81;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3597 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3596 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3598 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3583 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3590 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3597 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3599 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3598 X1 X2 X3 X4).
Qed.

Remark rem_3600 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3601 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3602 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3603 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3604 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3600 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3601 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3602 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3603 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3605 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3604 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_42;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3606 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3605 X1 X2 X3 X4).
Qed.

Remark rem_3607 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3608 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3609 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3610 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3611 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3607 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3608 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3609 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3610 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3612 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3611 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_68;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3613 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3612 X1 X2 X3 X4).
Qed.

Remark rem_3614 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3615 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3616 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3617 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3618 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3614 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3615 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3616 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3617 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3619 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3618 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_63;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3620 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3619 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3621 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3606 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3613 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3620 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3622 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3621 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3623 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_3576 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3599 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3622 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Remark rem_3624 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3625 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3626 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3627 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3628 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3624 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3625 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3626 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3627 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3629 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3628 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_26;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3630 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3629 X1 X2 X3 X4).
Qed.

Remark rem_3631 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3632 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3633 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3634 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3635 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3631 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3632 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3633 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3634 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3636 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3635 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_59;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3637 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3636 X1 X2 X3 X4).
Qed.

Remark rem_3638 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3639 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3640 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3641 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3642 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3638 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3639 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3640 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3641 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3643 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3642 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_56;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3644 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3643 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3645 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3630 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3637 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3644 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3646 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3647 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3648 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3649 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3650 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3646 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3647 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3648 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3649 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3651 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3650 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3652 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3653 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3654 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3655 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3656 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3652 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3653 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3654 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3655 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3657 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3656 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_74;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3658 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3657 X1 X2 X3 X4).
Qed.

Remark rem_3659 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3660 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3661 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3662 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3663 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3659 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3660 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3661 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3662 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3664 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3663 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_21;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3665 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3651 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3658 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3664 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3666 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3665 X1 X2 X3 X4).
Qed.

Remark rem_3667 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3668 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3669 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3670 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3671 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3667 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3668 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3669 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3670 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3672 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3671 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_79;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3673 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3674 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3675 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3676 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3677 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3673 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3674 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3675 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3676 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3678 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3677 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_22;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3679 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3678 X1 X2 X3 X4).
Qed.

Remark rem_3680 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3681 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3682 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3683 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3684 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3680 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3681 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3682 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3683 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3685 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3684 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_49;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3686 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3685 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3687 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3672 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3679 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3686 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3688 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_3645 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3666 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3687 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Remark rem_3689 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3690 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3691 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3692 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3693 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3689 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3690 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3691 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3692 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3694 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3693 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_31;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3695 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3694 X1 X2 X3 X4).
Qed.

Remark rem_3696 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3697 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3698 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3699 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3700 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3696 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3697 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3698 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3699 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3701 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3700 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_13;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3702 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3701 X1 X2 X3 X4).
Qed.

Remark rem_3703 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3704 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3705 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3706 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3707 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3703 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3704 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3705 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3706 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3708 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3707 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_53;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3709 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3708 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3710 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3695 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3702 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3709 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3711 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3712 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3713 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3714 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3715 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3711 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3712 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3713 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3714 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3716 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3715 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_7;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3717 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3718 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3719 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3720 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3721 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3717 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3718 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3719 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3720 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3722 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3721 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_72;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3723 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3722 X1 X2 X3 X4).
Qed.

Remark rem_3724 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3725 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3726 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3727 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3728 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3724 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3725 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3726 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3727 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3729 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3728 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_50;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3730 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3729 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3731 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3716 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3723 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3730 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3732 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3731 X1 X2 X3 X4).
Qed.

Remark rem_3733 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3734 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3735 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3736 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3737 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3733 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3734 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3735 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3736 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3738 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3737 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_24;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3739 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3740 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3741 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3742 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3743 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3739 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3740 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3741 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3742 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3744 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3743 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_77;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3745 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3744 X1 X2 X3 X4).
Qed.

Remark rem_3746 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3747 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3748 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3749 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_3556 X4).
Qed.

Remark rem_3750 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3746 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3747 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3748 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_3749 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3751 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3750 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_20;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3752 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3751 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3753 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3738 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3745 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3752 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3754 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3753 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3755 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_3710 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3732 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3754 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3756 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X3) (auto__q3 X3) (auto__q2 X3)). intro H. elim H.
  assert (HH:=(rem_3623 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3688 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3755 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_2977 X3)). intuition auto with or_3_hint.
Qed.

Remark rem_3757 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3758 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3759 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

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

Remark rem_3761 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3762 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3757 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3758 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3759 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3761 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3763 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3762 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_44;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3764 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3763 X1 X2 X3 X4).
Qed.

Remark rem_3765 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3766 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3767 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3768 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3769 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3765 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3766 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3767 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3768 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3770 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3769 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_29;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3771 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3770 X1 X2 X3 X4).
Qed.

Remark rem_3772 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3773 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3774 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3775 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3776 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3772 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3773 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3774 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3775 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3777 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3776 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_69;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3778 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3777 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3779 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3764 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3771 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3778 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3780 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3779 X1 X2 X3 X4).
Qed.

Remark rem_3781 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3782 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3783 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3784 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 X2 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3785 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3781 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3782 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3783 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3784 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3786 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3785 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_67;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3787 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3786 X1 X2 X3 X4).
Qed.

Remark rem_3788 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3789 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3790 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3791 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3792 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3788 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3789 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3790 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3791 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3793 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3792 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_64;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3794 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3793 X1 X2 X3 X4).
Qed.

Remark rem_3795 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3796 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3797 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3798 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3799 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3795 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3796 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3797 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3798 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3800 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3799 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3801 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3800 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3802 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3787 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3794 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3801 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3803 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3802 X1 X2 X3 X4).
Qed.

Remark rem_3804 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3805 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3806 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3807 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3808 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3804 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3805 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3806 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3807 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3809 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3808 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_54;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3810 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3809 X1 X2 X3 X4).
Qed.

Remark rem_3811 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3812 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3813 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3814 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3815 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3811 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3812 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3813 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3814 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3816 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3815 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_73;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3817 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3816 X1 X2 X3 X4).
Qed.

Remark rem_3818 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3819 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3820 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_3821 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3822 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3818 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3819 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3820 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3821 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3823 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3822 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_19;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3824 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3823 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3825 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3810 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3817 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3824 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3826 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3825 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3827 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_3780 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3803 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3826 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Remark rem_3828 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3829 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3830 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3831 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 X3 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3832 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3828 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3829 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3830 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3831 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3833 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3832 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_33;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3834 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3833 X1 X2 X3 X4).
Qed.

Remark rem_3835 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3836 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3837 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3838 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X1 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3839 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3835 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3836 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3837 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3838 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3840 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3839 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_30;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3841 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3840 X1 X2 X3 X4).
Qed.

Remark rem_3842 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3843 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3844 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3845 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3846 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3842 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3843 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3844 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3845 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3847 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3846 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_66;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3848 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3847 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3849 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3834 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3841 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3848 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3850 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3851 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3852 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3853 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3854 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3850 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3851 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3852 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3853 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3855 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3854 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_36;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3856 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3857 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3858 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3859 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3860 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3856 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3857 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3858 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3859 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3861 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3860 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_27;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3862 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3861 X1 X2 X3 X4).
Qed.

Remark rem_3863 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3864 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3865 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3866 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3867 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3863 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3864 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3865 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3866 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3868 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3867 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3869 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3868 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3870 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3855 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3862 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3869 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3871 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3870 X1 X2 X3 X4).
Qed.

Remark rem_3872 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3873 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3874 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3875 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3876 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3872 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3873 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3874 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3875 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3877 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3876 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_46;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3878 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3879 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3880 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3881 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3882 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3878 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3879 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3880 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3881 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3883 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3882 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_11;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3884 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3883 X1 X2 X3 X4).
Qed.

Remark rem_3885 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3886 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3887 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3888 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3889 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3885 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3886 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3887 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3888 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3890 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3889 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_9;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3891 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3890 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3892 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3877 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3884 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3891 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3893 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3892 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3894 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_3849 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3871 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3893 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Remark rem_3895 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3894 X1 X2 X3 X4).
Qed.

Remark rem_3896 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3897 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3898 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3899 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3900 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3896 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3897 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3898 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3899 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3901 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3900 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_65;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3902 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3901 X1 X2 X3 X4).
Qed.

Remark rem_3903 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3904 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3905 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3906 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3907 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3903 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3904 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3905 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3906 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3908 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3907 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_48;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3909 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3908 X1 X2 X3 X4).
Qed.

Remark rem_3910 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3911 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_3912 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3913 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3914 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3910 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3911 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3912 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3913 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3915 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3914 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_14;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3916 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3915 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3917 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3902 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3909 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3916 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3918 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3919 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3920 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3921 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3922 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3918 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3919 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3920 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3921 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3923 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3922 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_40;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3924 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3925 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3926 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3927 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3928 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3924 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3925 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3926 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3927 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3929 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3928 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_61;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3930 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3929 X1 X2 X3 X4).
Qed.

Remark rem_3931 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3932 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_3001 X2).
Qed.

Remark rem_3933 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3934 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3935 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3931 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3932 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3933 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3934 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3936 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3935 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_39;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3937 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3936 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3938 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3923 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3930 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3937 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3939 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3938 X1 X2 X3 X4).
Qed.

Remark rem_3940 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_3941 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3942 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3943 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3944 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3940 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3941 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3942 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3943 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3945 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3944 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3946 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_3947 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3948 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3949 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3950 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3946 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3947 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3948 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3949 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3951 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3950 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_16;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3952 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3951 X1 X2 X3 X4).
Qed.

Remark rem_3953 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3954 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3955 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3956 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_3760 X4).
Qed.

Remark rem_3957 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3953 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3954 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3955 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_3956 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3958 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3957 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3959 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3958 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3960 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_3945 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3952 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3959 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_3961 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3960 X1 X2 X3 X4).
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3962 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X2) (auto__q3 X2) (auto__q2 X2)). intro H. elim H.
  assert (HH:=(rem_3917 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3939 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3961 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_2978 X2)). intuition auto with or_3_hint.
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3963 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X3) (auto__q3 X3) (auto__q2 X3)). intro H. elim H.
  assert (HH:=(rem_3827 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3895 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3962 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_2977 X3)). intuition auto with or_3_hint.
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_3964 : forall X1 X2 X3 X4:term, auto_knows_current (nonceb_old X1 X2 X3 X4). (* Cut. *)
Proof.
  intros X1 X2 X3 X4.
  cut (or_3 (auto__q1 X4) (auto__q3 X4) (auto__q2 X4)). intro H. elim H.
  assert (HH:=(rem_3552 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3756 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3963 X1 X2 X3 X4)). tauto.
  assert (HH:=(rem_3338 X4)). intuition auto with or_3_hint.
Qed.

Remark rem_3965 : forall _big_a _big_b _big_kPa _big_na:term, auto_knows_current (nonceb_old _big_a _big_b _big_kPa _big_na). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current (nonceb_old X1 X2 X3 X4)). tauto. exact (rem_3964 X1 X2 X3 X4).
Qed.

Remark rem_3966 : forall X1 X2 X3 X4:term, auto__q2 (cons X4 (cons X2 nil)) -> auto__q2 (key prv server) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (key prv server) -> False). tauto.
  exact (rem_1034).
Qed.

Remark rem_3967 : forall X1 X2 X3 X4:term, auto__q1 (key prv server) -> auto__q3 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> False). tauto.
  exact (rem_1040).
Qed.

Remark rem_3968 : forall X1 X2 X3 X4:term, auto__q3 (cons X4 (cons X2 nil)) -> auto__q1 (key prv server) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> auto__q3 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_3967 X1 X2 X3 X4).
Qed.

Remark rem_3969 : forall X1 X2 X3 X4:term, auto__q1 (key prv server) -> auto__q2 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> False). tauto.
  exact (rem_1040).
Qed.

Remark rem_3970 : forall X1 X2 X3 X4:term, auto__q2 (cons X4 (cons X2 nil)) -> auto__q1 (key prv server) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> auto__q2 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_3969 X1 X2 X3 X4).
Qed.

Remark rem_3971 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3972 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3973 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_3974 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3975 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_3972 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3973 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3974 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_3971 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3976 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_3975 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_10;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_3977 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_3978 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_3977 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_3979 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_3973 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_3978 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3980 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_3979 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_3981 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_3976 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_3980 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3982 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_3981 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_3983 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_3971 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_3982 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3984 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_3983 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_3985 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_3984 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3974 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3986 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_3985 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_3987 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_3986 X1 X2 X3 X4).
Qed.

Remark rem_3988 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_3989 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_3990 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_3991 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_3992 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_3989 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3990 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3991 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_3988 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3993 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_3992 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_3994 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_3995 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_3994 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_3996 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X3). 2:apply (rem_3990 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_3995 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3997 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_3996 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_3998 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_3993 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_3997 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3999 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_3998 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4000 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_3988 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_3999 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4001 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4000 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4002 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_4001 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3991 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4003 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4002 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4004 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4003 X1 X2 X3 X4).
Qed.

Remark rem_4005 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_4006 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_4007 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_4008 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_4009 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_4006 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4007 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4008 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_4005 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4010 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4009 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_40;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4011 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_4012 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4011 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4013 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_4007 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_4012 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4014 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4013 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4015 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_4010 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_4014 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4016 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4015 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4017 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_4005 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_4016 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4018 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4017 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4019 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_4018 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4008 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4020 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4019 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4021 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4020 X1 X2 X3 X4).
Qed.

Remark rem_4022 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_4023 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_4024 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_4025 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_4026 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_4023 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_4024 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4025 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_4022 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4027 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4026 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_10;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4028 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_4029 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4028 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4030 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_4024 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_4029 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4031 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4030 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4032 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_4027 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_4031 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4033 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4032 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4034 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_4022 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_4033 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4035 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4034 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4036 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_4035 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4025 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4037 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4036 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4038 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4037 X1 X2 X3 X4).
Qed.

Remark rem_4039 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_120 pub X3 H);  intros.
  apply (rem_3987 X1 X2 X3 X4);  tauto.
  apply (rem_4004 X1 X2 X3 X4);  tauto.
  apply (rem_4021 X1 X2 X3 X4);  tauto.
  apply (rem_4038 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_4040 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_4039 X1 X2 X3 X4).
Qed.

Remark rem_4041 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4040 X1 X2 X3 X4).
Qed.

Remark rem_4042 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_4039 X1 X2 X3 X4).
Qed.

Remark rem_4043 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4042 X1 X2 X3 X4).
Qed.

Remark rem_4044 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_4045 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4044 X1 X2 X3 X4).
Qed.

Remark rem_4046 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_4041 X1 X2 X3 X4);  tauto.
  apply (rem_4043 X1 X2 X3 X4);  tauto.
  apply (rem_4045 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_4047 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4046 X1 X2 X3 X4).
Qed.

Remark rem_4048 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_4049 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4048 X1 X2 X3 X4).
Qed.

Remark rem_4050 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X2 nil H);  intros.
  apply (rem_4049 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_4051 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4050 X1 X2 X3 X4).
Qed.

Remark rem_4052 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_4053 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4052 X1 X2 X3 X4).
Qed.

Remark rem_4054 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X2 nil H);  intros.
  apply (rem_4053 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_4055 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4054 X1 X2 X3 X4).
Qed.

Remark rem_4056 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X2 nil) H);  intros.
  apply (rem_4047 X1 X2 X3 X4);  tauto.
  apply (rem_4051 X1 X2 X3 X4);  tauto.
  apply (rem_4055 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_4057 : forall X1 X2 X3 X4:term, auto__q2 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4056 X1 X2 X3 X4).
Qed.

Remark rem_4058 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_4059 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_4060 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_4061 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_4062 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q3 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_4059 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_4060 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4061 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X1). 2:apply (rem_4058 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4063 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4062 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_26;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4064 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_4065 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4064 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4066 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_4060 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_4065 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4067 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4066 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4068 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_4063 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_4067 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4069 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4068 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4070 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_4058 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_4069 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4071 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4070 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4072 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_4071 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4061 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4073 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4072 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4074 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4073 X1 X2 X3 X4).
Qed.

Remark rem_4075 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_4076 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_4077 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_4078 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_4079 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q3 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_4076 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_4077 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4078 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X1). 2:apply (rem_4075 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4080 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4079 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_26;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4081 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_4082 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4081 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4083 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_4077 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_4082 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4084 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4083 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4085 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_4080 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_4084 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4086 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4085 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4087 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_4075 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_4086 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4088 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4087 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4089 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_4088 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4078 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4090 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4089 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4091 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4090 X1 X2 X3 X4).
Qed.

Remark rem_4092 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_4093 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_4094 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_4095 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_4096 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_4093 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_4094 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4095 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_4092 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4097 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4096 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_10;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4098 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_4099 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4098 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4100 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_4094 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_4099 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4101 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4100 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4102 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_4097 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_4101 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4103 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4102 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4104 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_4092 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_4103 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4105 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4104 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4106 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_4105 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4095 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4107 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4106 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4108 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4107 X1 X2 X3 X4).
Qed.

Remark rem_4109 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_4110 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_4111 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_4112 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_4113 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q3 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_4110 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_4111 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4112 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X1). 2:apply (rem_4109 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4114 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4113 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_26;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4115 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_4116 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4115 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4117 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_4111 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_4116 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4118 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4117 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4119 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_4114 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_4118 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4120 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4119 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4121 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_4109 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_4120 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4122 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4121 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4123 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_4122 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4112 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4124 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4123 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4125 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4124 X1 X2 X3 X4).
Qed.

Remark rem_4126 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_4127 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_4128 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_4129 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_4130 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_4127 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_4128 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4129 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_4126 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4131 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4130 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_17;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4132 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_4133 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4132 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4134 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_4128 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_4133 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4135 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4134 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4136 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_4131 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_4135 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4137 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4136 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4138 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_4126 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_4137 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4139 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4138 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4140 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_4139 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4129 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4141 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4140 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_4142 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4141 X1 X2 X3 X4).
Qed.

Remark rem_4143 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X2 nil) H);  intros.
  apply (rem_4074 X1 X2 X3 X4);  tauto.
  apply (rem_4091 X1 X2 X3 X4);  tauto.
  apply (rem_4108 X1 X2 X3 X4);  tauto.
  apply (rem_4125 X1 X2 X3 X4);  tauto.
  apply (rem_4142 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_4144 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_4143 X1 X2 X3 X4).
Qed.

Remark rem_4145 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4144 X1 X2 X3 X4).
Qed.

Remark rem_4146 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1:term, auto__q2 X1 -> auto__q3 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_magent. exact (rem_1117).
Defined.

Remark rem_4147 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4148 : forall X2:term, auto__q1 X2 -> auto__q3 X2 -> False. (* Check disjointness. *)
Proof.
  intro X2.
  assert (H:=(seval_1_model X2)). intros.
  cut ((seval_1 X2)=val_1_3). 2:tauto.
  cut ((seval_1 X2)=val_1_1). 2:tauto.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_4149 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X2:term, auto__q1 X2 -> auto__q3 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_magent. exact (rem_4148).
Defined.

Remark rem_4150 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4151 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4152 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1:term, auto__q1 X1 -> auto__q3 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_magent. exact (rem_1241).
Defined.

Remark rem_4153 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4154 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4155 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4156 : forall X1 X2:term, auto_agent (crypt X1 X2) -> or_6
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q1 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_4157 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (crypt X1 X2) -> auto__q3 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2. intro H. intros.
  elim (rem_4156 X1 X2 H);  intros.
  apply (rem_4147 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4150 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4151 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4153 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4154 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4155 epsilon_m_q3_magent X1 X2);  tauto.
Defined.

Remark rem_4158 : forall X2:term, auto__q2 X2 -> auto__q3 X2 -> False. (* Check disjointness. *)
Proof.
  intro X2.
  assert (H:=(seval_1_model X2)). intros.
  cut ((seval_1 X2)=val_1_2). 2:tauto.
  cut ((seval_1 X2)=val_1_1). 2:tauto.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_4159 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X2:term, auto__q2 X2 -> auto__q3 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_magent. exact (rem_4158).
Defined.

Remark rem_4160 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4161 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4162 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1:term, auto__q1 X1 -> auto__q2 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_magent. exact (rem_1130).
Defined.

Remark rem_4163 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4164 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4165 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4166 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (crypt X1 X2) -> auto__q2 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2. intro H. intros.
  elim (rem_4156 X1 X2 H);  intros.
  apply (rem_4160 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4151 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4161 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4163 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4164 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4165 epsilon_m_q3_magent X1 X2);  tauto.
Defined.

Remark rem_4167 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4168 : forall X2:term, auto__q1 X2 -> auto__q2 X2 -> False. (* Check disjointness. *)
Proof.
  intro X2.
  assert (H:=(seval_1_model X2)). intros.
  cut ((seval_1 X2)=val_1_3). 2:tauto.
  cut ((seval_1 X2)=val_1_2). 2:tauto.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_4169 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X2:term, auto__q1 X2 -> auto__q2 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_magent. exact (rem_4168).
Defined.

Remark rem_4170 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X2 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4171 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4172 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X2 -> auto__q1 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4173 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X2 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4174 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (crypt X1 X2) -> auto__q3 X1 -> auto__q2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2. intro H. intros.
  elim (rem_4156 X1 X2 H);  intros.
  apply (rem_4167 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4170 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4171 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4154 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4172 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4173 epsilon_m_q3_magent X1 X2);  tauto.
Defined.

Remark rem_4175 : forall X1 X2:term, auto__q3 (crypt X1 X2) -> or_3
    (auto__q3 X1 /\ auto__q3 X2)
    (auto__q2 X1 /\ auto__q3 X2)
    (auto__q3 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_4176 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q3 (crypt X1 X2) -> auto_agent (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2. intro H. intros.
  elim (rem_4175 X1 X2 H);  intros.
  apply (rem_4157 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4166 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4174 epsilon_m_q3_magent X1 X2);  tauto.
Defined.

Remark rem_4177 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4178 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4179 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4180 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4181 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4182 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4183 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4184 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4185 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4186 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4187 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4188 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4189 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4190 : forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> or_13
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
.
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_4191 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_4177 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4178 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4179 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4180 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4181 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4182 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4183 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4184 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4185 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4186 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4187 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4188 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4189 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

Remark rem_4192 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4193 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4194 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4195 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4196 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4197 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4198 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4199 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4200 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4201 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4202 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4203 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4204 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4205 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_4192 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4193 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4194 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4195 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4196 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4197 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4198 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4199 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4200 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4201 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4202 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4203 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4204 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

Remark rem_4206 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4207 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4208 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4209 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4210 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4211 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4212 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4213 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4214 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4215 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4216 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4217 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_4206 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4207 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4208 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4209 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4195 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4210 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4211 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4212 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4213 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4214 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4215 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4198 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4216 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

Remark rem_4218 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4219 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4220 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4221 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4222 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4223 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4224 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4225 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4226 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4227 : forall X3:term, auto__q1 X3 -> auto__q2 X3 -> False. (* Check disjointness. *)
Proof.
  intro X3.
  assert (H:=(seval_1_model X3)). intros.
  cut ((seval_1 X3)=val_1_3). 2:tauto.
  cut ((seval_1 X3)=val_1_2). 2:tauto.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_4228 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X3:term, auto__q1 X3 -> auto__q2 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_magent. exact (rem_4227).
Defined.

Remark rem_4229 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4230 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4231 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4232 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4233 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_4218 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4219 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4220 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4221 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4222 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4223 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4224 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4225 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4226 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4229 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4230 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4231 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4232 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

Remark rem_4234 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4235 : forall X3:term, auto__q1 X3 -> auto__q3 X3 -> False. (* Check disjointness. *)
Proof.
  intro X3.
  assert (H:=(seval_1_model X3)). intros.
  cut ((seval_1 X3)=val_1_3). 2:tauto.
  cut ((seval_1 X3)=val_1_1). 2:tauto.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_4236 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X3:term, auto__q1 X3 -> auto__q3 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_magent. exact (rem_4235).
Defined.

Remark rem_4237 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_4238 : forall X3:term, auto__q2 X3 -> auto__q3 X3 -> False. (* Check disjointness. *)
Proof.
  intro X3.
  assert (H:=(seval_1_model X3)). intros.
  cut ((seval_1 X3)=val_1_2). 2:tauto.
  cut ((seval_1 X3)=val_1_1). 2:tauto.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_4239 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X3:term, auto__q2 X3 -> auto__q3 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_magent. exact (rem_4238).
Defined.

Remark rem_4240 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4241 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4242 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4243 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4244 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4245 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4246 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4247 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4248 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4249 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_4234 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4237 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4240 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4241 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4242 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4224 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4243 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4244 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4245 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4246 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4247 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4248 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4214 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

Remark rem_4250 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4251 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4252 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4253 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4254 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4255 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4256 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4257 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_4182 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4250 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4178 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4251 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4252 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4253 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4195 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4188 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4254 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4255 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4256 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4196 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4185 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

Remark rem_4258 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4259 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4260 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4261 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4262 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4263 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4264 : (forall X:term, auto__q3 X -> auto_agent 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_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4265 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4266 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4267 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4268 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4269 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_4258 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4259 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4260 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4261 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4262 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4263 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4264 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4265 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4182 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4266 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4267 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4268 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4177 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

Remark rem_4270 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4271 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4272 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4273 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4274 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4275 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_4276 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4277 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4278 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4279 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_4270 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4245 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4214 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4271 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4272 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4273 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4274 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4206 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4275 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4276 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4277 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4210 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4278 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

Remark rem_4280 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4281 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4282 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4283 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4284 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4285 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4286 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4287 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_4280 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4202 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4281 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4282 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4251 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4272 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4209 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4183 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4283 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4284 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4285 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4195 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4286 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

Remark rem_4288 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4289 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4290 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4291 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4292 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4293 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_4288 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4194 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4289 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4183 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4188 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4192 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4212 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4290 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4204 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4291 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4281 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4199 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4292 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

Remark rem_4294 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4295 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4296 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4297 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4298 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4299 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4300 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4301 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_4302 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4303 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_4294 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4295 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4296 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4297 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4298 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4222 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4242 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4259 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4299 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4300 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4301 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4302 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4255 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

Remark rem_4304 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4305 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4306 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4307 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_4308 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4309 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4310 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4311 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4312 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4313 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_4304 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4224 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4234 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4305 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4306 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4307 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4308 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4309 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4273 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4310 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4311 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4312 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4270 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

Remark rem_4314 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4315 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4316 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4317 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4318 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4319 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_4266 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4296 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4314 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4267 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4315 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4294 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4316 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4260 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4255 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4317 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4318 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4259 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4186 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

Remark rem_4320 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4321 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4322 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4323 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4324 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4325 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4326 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_4310 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4320 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4246 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4311 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4221 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4321 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4322 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4234 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4323 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4324 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4325 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4224 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4276 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

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_4327 : forall X1 X2 X3:term, auto__q3 (noncea_current X1 X2 X3) -> or_14
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3)
.
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_4328 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3:term, auto__q3 (noncea_current X1 X2 X3) -> auto_agent (noncea_current X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3. intro H. intros.
  elim (rem_4327 X1 X2 X3 H);  intros.
  apply (rem_4191 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4205 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4217 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4233 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4249 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4257 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4269 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4279 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4287 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4293 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4303 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4313 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4319 epsilon_m_q3_magent X1 X2 X3);  tauto.
  apply (rem_4326 epsilon_m_q3_magent X1 X2 X3);  tauto.
Defined.

Remark rem_4329 : forall X1:term, auto_agent (s X1) -> or_2
    (auto__q1 X1)    (auto__q2 X1).
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_4330 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1:term, auto_agent (s X1) -> auto__q3 X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1. intro H. intros.
  elim (rem_4329 X1 H);  intros.
  apply (rem_4152 epsilon_m_q3_magent X1);  tauto.
  apply (rem_4146 epsilon_m_q3_magent X1);  tauto.
Defined.

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

Remark rem_4332 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1:term, auto__q3 (s X1) -> auto_agent (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1. intro H. intros.
  elim (rem_4331 X1 H);  intros.
  apply (rem_4330 epsilon_m_q3_magent X1);  tauto.
Defined.

Remark rem_4333 : forall X1 X2:term, auto_agent (cons X1 X2) -> or_4
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q1 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_4334 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (cons X1 X2) -> auto__q3 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2. intro H. intros.
  elim (rem_4333 X1 X2 H);  intros.
  apply (rem_4147 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4151 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4154 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4155 epsilon_m_q3_magent X1 X2);  tauto.
Defined.

Remark rem_4335 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4336 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4337 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (cons X1 X2) -> auto__q3 X1 -> auto__q1 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2. intro H. intros.
  elim (rem_4333 X1 X2 H);  intros.
  apply (rem_4171 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4335 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4173 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4336 epsilon_m_q3_magent X1 X2);  tauto.
Defined.

Remark rem_4338 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (cons X1 X2) -> auto__q2 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2. intro H. intros.
  elim (rem_4333 X1 X2 H);  intros.
  apply (rem_4160 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4161 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4164 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4165 epsilon_m_q3_magent X1 X2);  tauto.
Defined.

Remark rem_4339 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (cons X1 X2) -> auto__q3 X1 -> auto__q2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2. intro H. intros.
  elim (rem_4333 X1 X2 H);  intros.
  apply (rem_4167 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4171 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4172 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4173 epsilon_m_q3_magent X1 X2);  tauto.
Defined.

Remark rem_4340 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X2 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4341 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4342 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (cons X1 X2) -> auto__q1 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2. intro H. intros.
  elim (rem_4333 X1 X2 H);  intros.
  apply (rem_4164 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4165 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4340 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4341 epsilon_m_q3_magent X1 X2);  tauto.
Defined.

Remark rem_4343 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q3 (cons X1 X2) -> auto_agent (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2. intro H. intros.
  elim (rem_1107 X1 X2 H);  intros.
  apply (rem_4334 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4337 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4338 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4339 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4342 epsilon_m_q3_magent X1 X2);  tauto.
Defined.

Remark rem_4344 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

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

Remark rem_4345 : forall X1 X2:term, auto_agent (key X1 X2) -> or_7
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q3 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q3 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q1 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_7_intro_1; tauto.
  intros. apply or_7_intro_2; tauto.
  intros. apply or_7_intro_3; tauto.
  intros. apply or_7_intro_4; tauto.
  intros. apply or_7_intro_5; tauto.
  intros. apply or_7_intro_6; tauto.
  intros. apply or_7_intro_7; tauto.
Qed.

Remark rem_4346 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (key X1 X2) -> auto__q2 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2. intro H. intros.
  elim (rem_4345 X1 X2 H);  intros.
  apply (rem_4160 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4344 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4151 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4147 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4163 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4164 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4165 epsilon_m_q3_magent X1 X2);  tauto.
Defined.

Remark rem_4347 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4348 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X1 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4349 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X1 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4350 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (key X1 X2) -> auto__q2 X1 -> auto__q1 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2. intro H. intros.
  elim (rem_4345 X1 X2 H);  intros.
  apply (rem_4347 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4151 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4335 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4171 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4165 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4348 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4349 epsilon_m_q3_magent X1 X2);  tauto.
Defined.

Remark rem_4351 : forall X1 X2:term, auto__q3 (key X1 X2) -> or_2
    (auto__q2 X1 /\ auto__q3 X2)
    (auto__q2 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_4352 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto__q3 (key X1 X2) -> auto_agent (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2. intro H. intros.
  elim (rem_4351 X1 X2 H);  intros.
  apply (rem_4346 epsilon_m_q3_magent X1 X2);  tauto.
  apply (rem_4350 epsilon_m_q3_magent X1 X2);  tauto.
Defined.

Remark rem_4353 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4354 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4355 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4356 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4357 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4358 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4359 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4360 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4361 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4362 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4363 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4364 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4365 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4366 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4367 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4368 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4369 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4370 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4371 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4372 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4373 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4374 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4375 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4376 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4377 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4378 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4379 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4380 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4381 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Inductive or_29(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:Prop) : Prop :=
    or_29_intro_1 : H1 -> (or_29 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)
  | or_29_intro_2 : H2 -> (or_29 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)
  | or_29_intro_3 : H3 -> (or_29 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)
  | or_29_intro_4 : H4 -> (or_29 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)
  | or_29_intro_5 : H5 -> (or_29 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)
  | or_29_intro_6 : H6 -> (or_29 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)
  | or_29_intro_7 : H7 -> (or_29 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)
  | or_29_intro_8 : H8 -> (or_29 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)
  | or_29_intro_9 : H9 -> (or_29 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)
  | or_29_intro_10 : H10 -> (or_29 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)
  | or_29_intro_11 : H11 -> (or_29 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)
  | or_29_intro_12 : H12 -> (or_29 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)
  | or_29_intro_13 : H13 -> (or_29 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)
  | or_29_intro_14 : H14 -> (or_29 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)
  | or_29_intro_15 : H15 -> (or_29 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)
  | or_29_intro_16 : H16 -> (or_29 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)
  | or_29_intro_17 : H17 -> (or_29 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)
  | or_29_intro_18 : H18 -> (or_29 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)
  | or_29_intro_19 : H19 -> (or_29 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)
  | or_29_intro_20 : H20 -> (or_29 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)
  | or_29_intro_21 : H21 -> (or_29 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)
  | or_29_intro_22 : H22 -> (or_29 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)
  | or_29_intro_23 : H23 -> (or_29 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)
  | or_29_intro_24 : H24 -> (or_29 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)
  | or_29_intro_25 : H25 -> (or_29 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)
  | or_29_intro_26 : H26 -> (or_29 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)
  | or_29_intro_27 : H27 -> (or_29 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)
  | or_29_intro_28 : H28 -> (or_29 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)
  | or_29_intro_29 : H29 -> (or_29 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)
.

Remark rem_4382 : forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> or_29
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
.
Proof.
  intros. inversion H.
  intros. apply or_29_intro_1; tauto.
  intros. apply or_29_intro_2; tauto.
  intros. apply or_29_intro_3; tauto.
  intros. apply or_29_intro_4; tauto.
  intros. apply or_29_intro_5; tauto.
  intros. apply or_29_intro_6; tauto.
  intros. apply or_29_intro_7; tauto.
  intros. apply or_29_intro_8; tauto.
  intros. apply or_29_intro_9; tauto.
  intros. apply or_29_intro_10; tauto.
  intros. apply or_29_intro_11; tauto.
  intros. apply or_29_intro_12; tauto.
  intros. apply or_29_intro_13; tauto.
  intros. apply or_29_intro_14; tauto.
  intros. apply or_29_intro_15; tauto.
  intros. apply or_29_intro_16; tauto.
  intros. apply or_29_intro_17; tauto.
  intros. apply or_29_intro_18; tauto.
  intros. apply or_29_intro_19; tauto.
  intros. apply or_29_intro_20; tauto.
  intros. apply or_29_intro_21; tauto.
  intros. apply or_29_intro_22; tauto.
  intros. apply or_29_intro_23; tauto.
  intros. apply or_29_intro_24; tauto.
  intros. apply or_29_intro_25; tauto.
  intros. apply or_29_intro_26; tauto.
  intros. apply or_29_intro_27; tauto.
  intros. apply or_29_intro_28; tauto.
  intros. apply or_29_intro_29; tauto.
Qed.

Remark rem_4383 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4353 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4354 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4355 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4356 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4357 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4358 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4359 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4360 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4361 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4362 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4363 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4364 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4365 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4366 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4367 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4368 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4369 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4370 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4371 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4372 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4373 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4374 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4375 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4376 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4377 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4378 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4379 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4380 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4381 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4384 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4385 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4386 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4387 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4388 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4389 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4390 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4391 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4392 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4393 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4394 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4395 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4396 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4397 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4398 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4399 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4400 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4401 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4402 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4403 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4404 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4405 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4406 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4407 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4408 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4409 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4410 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4384 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4385 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4359 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4386 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4387 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4375 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4388 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4389 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4390 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4391 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4392 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4372 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4393 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4394 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4395 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4396 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4397 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4398 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4399 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4400 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4401 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4402 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4403 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4404 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4405 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4406 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4407 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4408 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4409 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4411 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4412 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4413 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4414 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4415 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4416 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4417 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4418 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4419 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4420 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4421 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4422 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4423 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4424 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4425 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4426 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4427 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4428 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4429 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4430 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4431 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4432 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4433 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4434 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4435 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4436 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4437 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4438 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4439 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4440 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4411 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4412 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4413 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4414 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4415 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4416 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4417 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4418 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4419 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4420 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4421 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4422 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4423 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4424 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4425 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4426 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4427 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4428 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4429 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4430 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4431 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4432 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4433 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4434 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4435 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4436 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4437 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4438 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4439 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4441 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4442 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4443 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4444 : forall X4:term, auto__q1 X4 -> auto__q3 X4 -> False. (* Check disjointness. *)
Proof.
  intro X4.
  assert (H:=(seval_1_model X4)). intros.
  cut ((seval_1 X4)=val_1_3). 2:tauto.
  cut ((seval_1 X4)=val_1_1). 2:tauto.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_4445 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X4:term, auto__q1 X4 -> auto__q3 X4 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_magent. exact (rem_4444).
Defined.

Remark rem_4446 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4445 epsilon_m_q3_magent X4).
Defined.

Remark rem_4447 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4448 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4449 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4450 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4451 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4452 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4453 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4454 : forall X4:term, auto__q2 X4 -> auto__q3 X4 -> False. (* Check disjointness. *)
Proof.
  intro X4.
  assert (H:=(seval_1_model X4)). intros.
  cut ((seval_1 X4)=val_1_2). 2:tauto.
  cut ((seval_1 X4)=val_1_1). 2:tauto.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_4455 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X4:term, auto__q2 X4 -> auto__q3 X4 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_magent. exact (rem_4454).
Defined.

Remark rem_4456 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4455 epsilon_m_q3_magent X4).
Defined.

Remark rem_4457 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4458 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4459 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4460 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4461 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4462 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4463 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4464 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4465 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4466 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4467 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4468 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4469 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4470 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4471 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4472 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4473 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4441 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4442 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4443 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4413 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4446 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4447 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4448 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4449 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4450 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4451 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4452 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4453 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4456 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4457 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4458 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4459 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4460 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4461 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4462 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4463 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4464 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4465 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4466 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4467 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4468 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4469 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4470 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4471 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4472 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4474 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4475 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4476 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4477 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4478 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4479 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4480 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4481 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4482 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4483 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4484 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4485 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4486 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4487 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4488 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4489 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4490 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4491 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4492 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4493 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4494 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4495 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4496 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4497 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4498 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4499 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4500 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4501 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4474 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4475 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4476 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4477 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4478 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4479 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4480 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4481 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4482 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4483 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4484 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4485 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4486 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4487 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4488 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4471 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4489 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4490 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4491 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4492 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4493 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4494 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4495 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4496 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4497 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4452 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4498 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4499 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4500 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4502 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4503 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4504 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4505 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4506 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4507 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4508 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4509 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4510 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4511 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4512 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4513 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4514 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4515 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4516 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4517 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4518 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4519 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4520 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4521 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4522 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4523 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4524 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4525 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4526 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4502 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4503 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4504 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4505 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4372 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4506 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4507 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4508 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4509 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4510 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4511 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4512 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4354 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4513 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4514 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4388 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4515 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4516 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4517 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4518 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4519 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4390 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4520 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4521 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4522 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4407 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4523 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4524 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4525 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4527 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4528 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4529 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4530 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4531 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4532 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4533 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4534 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_4535 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4536 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_4537 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_4538 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4539 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4540 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4541 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4542 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4543 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4544 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4545 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4546 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4445 epsilon_m_q3_magent X4).
Defined.

Remark rem_4547 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4548 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4549 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4550 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4551 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4552 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4553 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4554 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4555 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4527 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4528 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4529 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4530 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4531 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4532 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4533 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4534 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4535 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4536 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4537 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4538 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4539 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4540 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4541 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4437 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4542 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4543 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4544 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4545 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4546 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4547 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4548 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4549 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4550 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4551 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4552 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4553 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4554 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4556 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4557 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4558 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4559 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4560 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4561 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4562 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4563 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4564 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4565 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4566 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4567 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4568 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4569 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4570 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4571 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4572 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4573 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4574 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4575 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4521 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4509 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4556 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4557 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4558 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4559 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4523 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4560 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4561 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4562 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4563 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4564 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4361 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4565 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4566 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4407 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4567 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4568 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4519 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4569 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4570 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4571 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4515 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4572 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4510 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4573 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4574 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4511 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4513 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4576 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4577 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4578 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4579 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4580 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4581 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4582 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4583 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4584 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4585 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4455 epsilon_m_q3_magent X4).
Defined.

Remark rem_4586 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4587 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4588 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4445 epsilon_m_q3_magent X4).
Defined.

Remark rem_4589 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4590 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4591 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4592 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4593 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4594 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4595 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4596 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4597 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4576 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4577 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4464 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4431 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4461 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4452 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4578 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4579 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4580 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4581 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4582 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4583 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4458 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4584 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4585 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4586 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4587 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4588 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4589 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4437 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4590 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4591 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4424 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4592 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4593 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4594 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4595 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4418 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4596 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4598 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4599 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4600 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4601 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4602 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4603 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4604 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4605 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4606 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4607 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4608 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4609 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4610 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4611 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4612 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4613 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4614 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4615 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4616 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4617 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4598 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4599 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4600 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4601 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4423 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4602 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4603 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4593 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4604 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4605 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4420 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4606 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4607 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4576 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4608 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4609 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4434 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4425 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4610 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4412 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4611 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4612 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4411 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4613 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4614 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4615 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4577 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4435 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4616 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4618 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4619 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4620 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4621 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4622 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4623 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4624 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4625 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4626 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4627 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4628 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4629 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4630 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4631 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4632 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4633 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4634 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4635 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4636 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4637 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4638 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4639 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4520 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4518 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4618 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4619 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4620 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4621 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4622 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4623 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4569 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4511 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4624 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4625 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4372 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4626 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4516 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4627 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4628 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4629 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4630 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4631 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4632 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4633 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4634 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4515 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4524 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4635 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4636 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4637 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4638 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4640 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4641 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4642 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4643 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4644 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4645 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4646 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4647 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4648 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4649 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4650 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4651 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4652 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4404 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4390 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4379 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4516 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4640 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4369 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4407 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4641 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4571 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4642 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4643 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4558 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4374 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4644 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4645 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4406 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4646 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4647 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4401 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4633 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4648 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4649 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4397 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4650 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4391 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4651 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4573 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4392 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4394 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4653 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4654 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4655 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4656 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4657 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4658 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4659 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4660 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4661 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4662 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4663 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4664 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4665 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4666 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4667 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4653 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4502 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4654 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4524 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4375 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4655 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4525 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4656 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4521 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4657 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4658 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4506 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4353 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4659 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4391 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4409 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4660 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4392 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4661 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4520 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4508 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4404 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4662 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4663 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4664 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4394 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4513 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4665 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4666 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4668 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4669 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4670 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4671 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4672 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4673 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4674 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4675 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4676 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4677 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4678 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4679 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4680 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4681 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4682 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4683 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4684 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4685 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4686 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4687 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4688 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4689 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4409 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4388 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4668 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4669 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4670 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4671 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4672 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4673 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4407 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4389 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4674 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4675 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4368 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4676 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4677 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4678 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4679 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4680 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4681 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4627 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4682 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4406 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4683 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4394 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4684 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4685 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4686 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4687 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4688 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4690 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4691 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4692 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4693 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4694 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4695 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4696 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4697 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4698 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4699 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4700 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4701 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4702 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4703 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4704 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4705 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4513 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4523 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4690 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4632 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4691 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4692 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4693 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4694 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4574 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4560 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4695 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4696 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4379 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4697 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4648 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4686 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4698 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4699 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4700 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4636 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4701 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4573 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4626 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4565 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4508 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4702 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4703 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4623 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4704 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4706 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4707 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4708 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4709 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4710 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4711 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4712 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4713 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4714 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4715 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4716 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4717 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4718 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4719 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4720 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4721 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4722 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4723 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4724 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4725 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4726 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4381 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4359 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4706 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4707 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4708 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4709 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4668 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4710 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4379 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4360 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4711 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4712 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4713 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4714 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4715 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4716 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4717 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4718 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4719 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4675 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4720 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4378 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4671 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4366 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4721 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4722 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4723 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4724 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4725 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4727 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4728 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4729 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4730 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4731 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4732 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4733 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4734 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4735 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4736 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4737 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4738 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4739 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4740 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4403 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4400 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4675 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4727 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4728 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4729 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4627 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4674 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4633 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4392 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4730 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4620 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4387 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4679 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4398 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4731 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4732 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4733 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4669 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4734 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4735 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4736 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4737 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4397 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4408 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4738 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4635 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4739 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4683 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4741 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4742 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4743 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4744 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4745 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4746 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4747 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4748 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4749 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4750 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4751 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4752 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4753 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4754 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4755 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4756 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4757 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4758 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4759 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4760 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4761 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4762 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4763 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4741 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4742 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4743 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4744 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4745 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4476 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4746 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4747 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4748 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4749 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4493 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4750 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4751 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4752 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4753 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4462 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4498 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4754 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4755 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4756 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4757 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4758 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4480 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4759 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4760 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4464 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4761 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4491 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4762 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4764 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4765 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4766 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4767 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4768 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4769 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4770 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4771 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4772 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4773 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4774 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4775 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4776 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4777 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4397 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4633 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4691 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4629 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4764 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4765 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4635 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4766 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4767 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4643 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4768 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4769 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4640 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4770 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4647 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4738 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4771 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4772 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4735 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4773 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4699 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4774 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4732 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4646 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4392 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4775 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4776 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4730 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4679 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4778 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4779 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4780 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4781 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4782 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_4783 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4784 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_4785 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4786 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4787 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4788 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4789 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4790 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4455 epsilon_m_q3_magent X4).
Defined.

Remark rem_4791 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4792 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4793 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4794 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4795 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4796 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4778 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4779 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4748 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4780 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4539 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4482 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4781 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4782 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4783 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4784 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4536 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4785 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4786 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4787 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4788 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4577 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4549 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4541 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4789 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4528 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4790 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4791 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4527 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4792 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4793 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4580 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4794 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4550 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4795 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4797 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4798 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4799 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4800 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4801 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4802 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4803 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4804 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4805 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4806 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4807 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4808 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4809 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4810 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4811 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4812 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4813 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4814 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4468 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4600 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4797 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4798 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4799 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4800 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4462 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4801 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4758 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4802 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4803 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4745 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4804 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4449 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4805 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4806 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4452 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4807 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4808 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4413 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4809 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4458 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4471 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4451 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4810 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4811 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4464 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4812 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4813 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4815 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4816 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4817 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4818 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4819 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4820 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4821 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4822 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4823 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4824 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4825 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4826 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4827 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4828 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4829 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4830 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4831 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4832 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4833 : forall X4:term, auto__q1 X4 -> auto__q2 X4 -> False. (* Check disjointness. *)
Proof.
  intro X4.
  assert (H:=(seval_1_model X4)). intros.
  cut ((seval_1 X4)=val_1_3). 2:tauto.
  cut ((seval_1 X4)=val_1_2). 2:tauto.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_4834 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X4:term, auto__q1 X4 -> auto__q2 X4 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_magent. exact (rem_4833).
Defined.

Remark rem_4835 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4834 epsilon_m_q3_magent X4).
Defined.

Remark rem_4836 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4837 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4838 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4445 epsilon_m_q3_magent X4).
Defined.

Remark rem_4839 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4840 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4841 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4815 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4816 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4817 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4818 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4819 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4820 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4821 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4587 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4822 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4823 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4824 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4825 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4826 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4827 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4828 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4829 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4830 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4831 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4437 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4832 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4551 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4835 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4836 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4837 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4434 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4838 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4839 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4427 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4840 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4842 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4843 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4844 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4845 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4846 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4847 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4848 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4849 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4850 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4851 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4852 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4853 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4854 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4855 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4856 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4857 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4858 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4859 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4860 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4861 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4842 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4843 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4844 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4845 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4846 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4847 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4742 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4749 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4848 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4849 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4850 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4851 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4852 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4759 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4853 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4600 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4482 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4854 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4855 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4856 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4857 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4786 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4475 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4858 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4859 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4758 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4748 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4860 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4741 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4862 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4863 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4864 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4455 epsilon_m_q3_magent X4).
Defined.

Remark rem_4865 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4866 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_4867 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4868 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4869 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4834 epsilon_m_q3_magent X4).
Defined.

Remark rem_4870 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4871 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4872 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4873 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4874 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4875 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4876 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4877 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4878 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4879 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4862 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4863 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4864 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4856 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4865 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4866 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4867 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4759 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4868 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4858 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4482 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4869 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4870 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4871 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4786 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4442 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4872 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4539 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4742 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4873 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4748 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4874 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4875 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4876 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4842 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4450 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4877 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4475 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4878 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4880 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4881 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4882 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4883 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4884 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4885 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4886 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4887 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4888 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4889 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4890 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4662 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4520 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4880 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4637 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4729 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4881 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4638 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4882 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4515 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4658 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4883 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4621 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4375 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4884 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4392 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4683 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4885 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4730 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4886 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4634 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4623 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4397 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4887 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4660 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4665 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4679 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4626 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4888 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4889 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4891 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4892 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4893 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_4894 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4895 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4896 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4897 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4898 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4899 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4900 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4901 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_4902 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4903 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4904 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4905 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4906 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4455 epsilon_m_q3_magent X4).
Defined.

Remark rem_4907 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4908 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4445 epsilon_m_q3_magent X4).
Defined.

Remark rem_4909 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4910 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4891 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4892 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4762 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4893 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4471 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4500 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4894 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4895 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4795 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4896 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4897 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4480 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4468 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4898 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4593 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4899 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4900 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4418 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4901 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4902 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4903 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4576 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4904 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4905 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4906 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4596 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4907 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4908 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4909 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4911 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4912 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4913 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4914 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4915 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4916 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4917 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4918 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4919 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4920 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4455 epsilon_m_q3_magent X4).
Defined.

Remark rem_4921 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_4922 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4923 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4924 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4925 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4926 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_4927 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_4928 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4911 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4912 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4442 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4412 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4913 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4914 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4915 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4576 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4916 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4613 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4434 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4917 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4918 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4919 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4612 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4920 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4815 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4432 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4603 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4921 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4577 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4922 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4923 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4924 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4598 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4925 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4926 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4411 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4927 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4929 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4930 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4931 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4932 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4933 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4934 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4935 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4936 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4475 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4856 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4750 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4929 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4930 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4485 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4756 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4493 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4785 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4850 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4931 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4932 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4846 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4498 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4854 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4413 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4532 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4933 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4744 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4934 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4935 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4539 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4492 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4482 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4860 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4583 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4529 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4477 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4480 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4937 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4938 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4939 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4940 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4941 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4942 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4943 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4944 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4945 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4946 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4947 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4948 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4949 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4950 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4951 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4952 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4953 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4954 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4955 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4956 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4957 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4958 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4937 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4654 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4938 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4939 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4709 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4940 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4941 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4942 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4943 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4944 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4945 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4946 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4947 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4948 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4360 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4725 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4949 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4711 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4950 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4880 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4951 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4366 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4952 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4953 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4954 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4714 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4955 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4956 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4957 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4959 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4960 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4961 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4962 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4963 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4964 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4965 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4966 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4967 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4968 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4969 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4602 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4606 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4745 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4959 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4960 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4478 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4413 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4803 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4539 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4488 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4490 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4930 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4961 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4452 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4962 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4963 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4964 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4965 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4798 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4422 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4754 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4966 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4416 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4494 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4967 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4461 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4583 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4968 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4471 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4970 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4971 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4972 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4973 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4974 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4975 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_4976 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4977 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4978 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4979 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4980 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4981 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4982 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4970 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4842 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4971 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4860 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4486 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4972 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4741 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4973 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4858 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4974 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4483 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4847 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4975 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4976 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4977 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4468 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4496 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4488 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4760 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4475 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4749 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4978 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4474 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4979 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4980 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4451 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4759 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4497 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4981 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4983 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4984 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4985 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4986 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_4987 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4988 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4989 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4990 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4991 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4660 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4515 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4692 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4624 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4765 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4983 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4626 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4984 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4567 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4985 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4986 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4987 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4369 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4988 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4643 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4679 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4989 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4768 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4623 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4628 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4695 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4646 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4885 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4990 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4658 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4770 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4698 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4883 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4884 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_4992 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4993 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4994 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4995 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_4996 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_4997 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4998 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_4999 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5000 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5001 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5002 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5003 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5004 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5005 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5006 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5007 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5008 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5009 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5010 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4992 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4993 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4994 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4995 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4364 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4996 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4504 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4997 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4998 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4999 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5000 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5001 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5002 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4943 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5003 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4359 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4559 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5004 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5005 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4512 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5006 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4361 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4506 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5007 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5008 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4379 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4556 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5009 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4654 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5011 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5012 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5013 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5014 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_5015 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5016 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4525 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4507 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5011 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4630 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4675 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4880 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5012 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5013 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4523 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4508 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4623 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4618 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4359 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4704 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4401 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4672 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4626 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4735 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5014 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4622 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4700 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4407 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4638 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4513 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4661 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4686 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4693 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4886 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5015 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5017 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_5018 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_5019 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5020 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_5021 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5022 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5023 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5024 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5025 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5026 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4981 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4741 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5017 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4491 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4800 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5018 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4762 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5019 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4759 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4973 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4481 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4476 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5020 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5021 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4802 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4813 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4487 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4803 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5022 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4480 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4747 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4451 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4500 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4976 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5023 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4449 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4752 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5024 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5025 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5027 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_5028 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5029 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5030 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5031 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_5032 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5033 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_5034 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_5035 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_5036 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4616 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4603 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4462 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4429 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4963 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4471 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5027 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5028 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4577 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4593 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4418 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4413 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5029 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4596 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5030 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5031 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4424 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5032 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5033 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4417 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4589 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4615 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4439 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4576 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5034 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4586 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4578 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5035 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4899 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5037 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5038 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5039 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5040 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5041 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5042 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5043 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5044 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5045 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5046 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5047 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5048 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_5037 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4992 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5038 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5009 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4358 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5039 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4654 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4944 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5007 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5040 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5041 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4996 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5042 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4953 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4362 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4381 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5043 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4363 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5044 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4506 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4997 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4376 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4655 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5045 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5046 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4366 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4943 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5047 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4937 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5049 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5050 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5051 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5052 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5053 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5054 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4834 epsilon_m_q3_magent X4).
Defined.

Remark rem_5055 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5056 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5057 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_5058 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_5059 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_5060 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5061 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5062 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_5063 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4445 epsilon_m_q3_magent X4).
Defined.

Remark rem_5064 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5065 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_5049 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5050 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5051 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4545 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4825 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5052 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5053 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4540 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5054 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4549 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4542 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5055 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5056 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5057 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4547 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4821 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5058 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5059 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4533 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5060 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4552 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4822 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5061 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5062 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4527 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4839 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5063 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4548 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5064 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5066 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5067 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5068 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_5069 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5070 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5071 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_5072 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5073 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_5074 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5075 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4515 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4569 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4696 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5066 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4769 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4987 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4636 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4695 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5067 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4563 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5068 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5069 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4558 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4698 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4568 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4635 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5070 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5071 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4632 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5072 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5073 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4767 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4628 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4567 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4511 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4776 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5074 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4624 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4626 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5076 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5077 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5078 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_5079 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_5080 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_5081 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5082 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4666 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4525 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4941 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4886 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4671 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4952 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5015 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5076 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4513 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4656 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4882 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4880 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4381 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5077 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4389 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4688 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4884 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4674 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5078 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4638 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5013 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4394 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4889 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4659 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5079 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4676 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4704 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5080 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5081 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5083 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5084 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5085 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5086 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_5087 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5088 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5089 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5090 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5091 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_5083 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5084 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4751 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5085 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4961 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4486 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4600 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4802 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4786 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4977 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4488 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4846 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5086 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4451 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5087 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5029 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4494 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4962 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5088 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4606 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4753 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5089 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4602 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4978 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5090 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4458 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4758 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4967 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4468 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5092 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_5093 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_5094 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4834 epsilon_m_q3_magent X4).
Defined.

Remark rem_5095 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_5096 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5097 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5098 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5099 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4455 epsilon_m_q3_magent X4).
Defined.

Remark rem_5100 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_5101 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4149 epsilon_m_q3_magent X2).
Defined.

Remark rem_5102 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_5103 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_5104 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_5092 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5093 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4742 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5094 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4606 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4475 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5095 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5096 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4779 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4793 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4550 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4856 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5084 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4795 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5097 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4603 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4527 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5098 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5099 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5100 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4789 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4604 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5101 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4778 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5102 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4577 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4781 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5103 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4892 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5105 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5106 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_5107 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_5108 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4834 epsilon_m_q3_magent X4).
Defined.

Remark rem_5109 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_5110 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5111 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5112 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5113 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5114 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5115 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5116 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_5105 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4862 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5106 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4475 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5107 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5108 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4878 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4976 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4876 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4979 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4496 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4866 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5109 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5110 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4978 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4441 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5111 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4494 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4741 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4875 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4759 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5112 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5113 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5114 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4970 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4467 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4871 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4474 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5115 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5117 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_5118 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_5119 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5120 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5121 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5122 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4659 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4513 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4955 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4623 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4717 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4949 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4704 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5117 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4565 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5118 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4984 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4692 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4366 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5119 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4641 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4676 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4988 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4766 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5013 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4626 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4694 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4644 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4884 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5120 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4656 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5121 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4697 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4882 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5077 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5123 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_5124 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4445 epsilon_m_q3_magent X4).
Defined.

Remark rem_5125 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5126 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4236 epsilon_m_q3_magent X3).
Defined.

Remark rem_5127 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_5128 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5129 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5130 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5131 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5132 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5133 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5134 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_5115 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4878 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5123 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4480 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4447 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5124 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5125 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5021 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4871 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4976 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4487 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5126 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5127 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5128 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4451 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4472 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5129 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4452 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4762 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5130 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4752 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4467 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5131 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5110 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4981 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4457 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5132 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4500 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5133 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5135 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5136 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5137 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5138 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5139 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5140 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5141 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5142 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5143 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4655 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4506 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4946 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5135 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5136 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5137 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4880 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4945 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4559 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5041 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5138 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5139 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4358 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4949 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4363 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4671 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4983 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5140 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4939 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4621 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5141 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4369 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4881 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5043 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5047 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4717 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4692 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5142 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4952 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5144 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_5145 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5146 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4663 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4521 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4943 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4511 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4369 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5043 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4513 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5118 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4572 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5144 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4985 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4559 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4376 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5120 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4642 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4394 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4990 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4643 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4508 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4515 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4560 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4650 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4660 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5145 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4657 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4644 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4565 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4658 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4659 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5147 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5148 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5149 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5150 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5151 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5152 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5153 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5154 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5155 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4506 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4512 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5147 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5148 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5149 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5139 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4618 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5141 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4564 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5000 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5150 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5151 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4364 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4692 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5004 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4675 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4987 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5152 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5153 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4625 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5154 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4558 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4621 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4559 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5009 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4691 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4696 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5135 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4880 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5156 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5157 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_5158 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_5159 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_5160 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4169 epsilon_m_q3_magent X2).
Defined.

Remark rem_5161 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5162 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4394 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4407 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4723 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4735 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5156 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4717 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4686 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5157 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4573 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4641 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4766 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4691 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4378 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5121 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5158 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4685 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4770 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5159 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4682 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4635 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5160 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4651 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4679 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4644 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4389 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5161 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4702 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4674 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4676 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5163 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5164 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5165 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5166 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5167 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5168 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4375 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4372 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4712 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5163 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5164 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5136 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4675 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4711 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4558 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4363 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5140 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5149 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4357 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4717 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4370 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4670 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4765 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5165 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4707 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4620 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5166 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4640 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4729 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4369 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4380 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5156 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4691 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5167 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4671 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5169 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4159 epsilon_m_q3_magent X2).
Defined.

Remark rem_5170 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5171 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X4 -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4152 epsilon_m_q3_magent X1).
Defined.

Remark rem_5172 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4654 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4504 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5169 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5153 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4712 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4946 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5011 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4951 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4556 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4997 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5141 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5147 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4355 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4955 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4373 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4668 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4692 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5166 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5170 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4618 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5171 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4379 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4880 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4943 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5044 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4723 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4690 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4939 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4941 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5173 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5174 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5175 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_5176 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4162 epsilon_m_q3_magent X1).
Defined.

Remark rem_5177 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q3 X4 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4445 epsilon_m_q3_magent X4).
Defined.

Remark rem_5178 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5179 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4239 epsilon_m_q3_magent X3).
Defined.

Remark rem_5180 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X4 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4146 epsilon_m_q3_magent X1).
Defined.

Remark rem_5181 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_5182 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X3 -> False). clear  epsilon_m_q3_magent. tauto.
  exact (rem_4228 epsilon_m_q3_magent X3).
Defined.

Remark rem_5183 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_4923 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4921 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4463 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4430 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5173 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5174 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5175 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4424 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4816 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4434 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4427 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5176 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4913 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4840 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4432 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5177 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4836 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5178 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4417 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5179 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4437 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5180 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5181 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4815 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4411 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4829 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4821 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4433 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5182 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Inductive or_52(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:Prop) : Prop :=
    or_52_intro_1 : H1 -> (or_52 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)
  | or_52_intro_2 : H2 -> (or_52 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)
  | or_52_intro_3 : H3 -> (or_52 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)
  | or_52_intro_4 : H4 -> (or_52 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)
  | or_52_intro_5 : H5 -> (or_52 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)
  | or_52_intro_6 : H6 -> (or_52 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)
  | or_52_intro_7 : H7 -> (or_52 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)
  | or_52_intro_8 : H8 -> (or_52 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)
  | or_52_intro_9 : H9 -> (or_52 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)
  | or_52_intro_10 : H10 -> (or_52 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)
  | or_52_intro_11 : H11 -> (or_52 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)
  | or_52_intro_12 : H12 -> (or_52 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)
  | or_52_intro_13 : H13 -> (or_52 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)
  | or_52_intro_14 : H14 -> (or_52 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)
  | or_52_intro_15 : H15 -> (or_52 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)
  | or_52_intro_16 : H16 -> (or_52 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)
  | or_52_intro_17 : H17 -> (or_52 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)
  | or_52_intro_18 : H18 -> (or_52 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)
  | or_52_intro_19 : H19 -> (or_52 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)
  | or_52_intro_20 : H20 -> (or_52 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)
  | or_52_intro_21 : H21 -> (or_52 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)
  | or_52_intro_22 : H22 -> (or_52 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)
  | or_52_intro_23 : H23 -> (or_52 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)
  | or_52_intro_24 : H24 -> (or_52 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)
  | or_52_intro_25 : H25 -> (or_52 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)
  | or_52_intro_26 : H26 -> (or_52 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)
  | or_52_intro_27 : H27 -> (or_52 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)
  | or_52_intro_28 : H28 -> (or_52 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)
  | or_52_intro_29 : H29 -> (or_52 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)
  | or_52_intro_30 : H30 -> (or_52 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)
  | or_52_intro_31 : H31 -> (or_52 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)
  | or_52_intro_32 : H32 -> (or_52 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)
  | or_52_intro_33 : H33 -> (or_52 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)
  | or_52_intro_34 : H34 -> (or_52 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)
  | or_52_intro_35 : H35 -> (or_52 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)
  | or_52_intro_36 : H36 -> (or_52 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)
  | or_52_intro_37 : H37 -> (or_52 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)
  | or_52_intro_38 : H38 -> (or_52 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)
  | or_52_intro_39 : H39 -> (or_52 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)
  | or_52_intro_40 : H40 -> (or_52 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)
  | or_52_intro_41 : H41 -> (or_52 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)
  | or_52_intro_42 : H42 -> (or_52 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)
  | or_52_intro_43 : H43 -> (or_52 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)
  | or_52_intro_44 : H44 -> (or_52 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)
  | or_52_intro_45 : H45 -> (or_52 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)
  | or_52_intro_46 : H46 -> (or_52 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)
  | or_52_intro_47 : H47 -> (or_52 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)
  | or_52_intro_48 : H48 -> (or_52 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)
  | or_52_intro_49 : H49 -> (or_52 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)
  | or_52_intro_50 : H50 -> (or_52 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)
  | or_52_intro_51 : H51 -> (or_52 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)
  | or_52_intro_52 : H52 -> (or_52 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)
.

Remark rem_5184 : forall X1 X2 X3 X4:term, auto__q3 (nonceb_current X1 X2 X3 X4) -> or_52
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
.
Proof.
  intros. inversion H.
  intros. apply or_52_intro_1; tauto.
  intros. apply or_52_intro_2; tauto.
  intros. apply or_52_intro_3; tauto.
  intros. apply or_52_intro_4; tauto.
  intros. apply or_52_intro_5; tauto.
  intros. apply or_52_intro_6; tauto.
  intros. apply or_52_intro_7; tauto.
  intros. apply or_52_intro_8; tauto.
  intros. apply or_52_intro_9; tauto.
  intros. apply or_52_intro_10; tauto.
  intros. apply or_52_intro_11; tauto.
  intros. apply or_52_intro_12; tauto.
  intros. apply or_52_intro_13; tauto.
  intros. apply or_52_intro_14; tauto.
  intros. apply or_52_intro_15; tauto.
  intros. apply or_52_intro_16; tauto.
  intros. apply or_52_intro_17; tauto.
  intros. apply or_52_intro_18; tauto.
  intros. apply or_52_intro_19; tauto.
  intros. apply or_52_intro_20; tauto.
  intros. apply or_52_intro_21; tauto.
  intros. apply or_52_intro_22; tauto.
  intros. apply or_52_intro_23; tauto.
  intros. apply or_52_intro_24; tauto.
  intros. apply or_52_intro_25; tauto.
  intros. apply or_52_intro_26; tauto.
  intros. apply or_52_intro_27; tauto.
  intros. apply or_52_intro_28; tauto.
  intros. apply or_52_intro_29; tauto.
  intros. apply or_52_intro_30; tauto.
  intros. apply or_52_intro_31; tauto.
  intros. apply or_52_intro_32; tauto.
  intros. apply or_52_intro_33; tauto.
  intros. apply or_52_intro_34; tauto.
  intros. apply or_52_intro_35; tauto.
  intros. apply or_52_intro_36; tauto.
  intros. apply or_52_intro_37; tauto.
  intros. apply or_52_intro_38; tauto.
  intros. apply or_52_intro_39; tauto.
  intros. apply or_52_intro_40; tauto.
  intros. apply or_52_intro_41; tauto.
  intros. apply or_52_intro_42; tauto.
  intros. apply or_52_intro_43; tauto.
  intros. apply or_52_intro_44; tauto.
  intros. apply or_52_intro_45; tauto.
  intros. apply or_52_intro_46; tauto.
  intros. apply or_52_intro_47; tauto.
  intros. apply or_52_intro_48; tauto.
  intros. apply or_52_intro_49; tauto.
  intros. apply or_52_intro_50; tauto.
  intros. apply or_52_intro_51; tauto.
  intros. apply or_52_intro_52; tauto.
Qed.

Remark rem_5185 : (forall X:term, auto__q3 X -> auto_agent X -> False)
    -> forall X1 X2 X3 X4:term, auto__q3 (nonceb_current X1 X2 X3 X4) -> auto_agent (nonceb_current X1 X2 X3 X4) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_magent. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_5184 X1 X2 X3 X4 H);  intros.
  apply (rem_4383 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4410 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4440 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4473 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4501 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4526 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4555 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4575 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4597 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4617 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4639 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4652 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4667 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4689 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4705 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4726 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4740 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4763 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4777 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4796 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4814 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4841 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4861 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4879 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4890 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4910 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4928 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4936 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4958 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4969 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4982 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_4991 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5010 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5016 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5026 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5036 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5048 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5065 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5075 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5082 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5091 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5104 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5116 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5122 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5134 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5143 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5146 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5155 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5162 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5168 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5172 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
  apply (rem_5183 epsilon_m_q3_magent X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5186 : forall X1 X2 X3:term, auto__q3 (noncea_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5187 : auto__q3 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5188 : auto__q3 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5189 : auto__q3 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5190 : auto__q3 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5191 : auto__q3 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5192 : auto__q3 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5193 : auto__q3 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_5196 : forall X1:term, auto__q3 X1 -> auto_agent X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m_q3_magent 1.
  intro X. case X.
   intro H. elim (rem_5192  H).
   intro H. elim (rem_5189  H).
  intros X1 X2;  exact (rem_4343 epsilon_m_q3_magent X1 X2).
  intros X1 X2;  exact (rem_4176 epsilon_m_q3_magent X1 X2).
   intro H. elim (rem_5188  H).
  intros X1 X2;  exact (rem_4352 epsilon_m_q3_magent X1 X2).
   intro H. elim (rem_5187  H).
  intros X1 X2 X3;  exact (rem_4328 epsilon_m_q3_magent X1 X2 X3).
  intros X1 X2 X3. intro H. elim (rem_5186 X1 X2 X3 H).
  intros X1 X2 X3 X4;  exact (rem_5185 epsilon_m_q3_magent X1 X2 X3 X4).
  intros X1 X2 X3 X4. intro H. elim (rem_5194 X1 X2 X3 X4 H).
   intro H. elim (rem_1027  H).
   intro H. elim (rem_5193  H).
  intros X1;  exact (rem_4332 epsilon_m_q3_magent X1).
   intro H. elim (rem_5190  H).
  intros X1 X2 X3. intro H. elim (rem_5195 X1 X2 X3 H).
   intro H. elim (rem_5191  H).
Qed.

Remark rem_5197 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_5196 X3)). tauto.
Qed.

Remark rem_5198 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5197 X1 X2 X3 X4).
Qed.

Remark rem_5199 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_5200 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5201 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5202 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5203 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q3 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5200 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5201 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5202 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X1). 2:apply (rem_5199 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5204 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5203 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_21;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5205 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5206 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5205 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5207 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5201 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5206 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5208 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5207 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5209 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5204 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5208 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5210 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5209 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5211 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5199 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5210 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5212 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5211 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5213 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5212 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5202 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5214 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5213 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5215 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5214 X1 X2 X3 X4).
Qed.

Remark rem_5216 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_5217 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5218 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5219 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5220 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q3 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5217 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5218 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5219 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X1). 2:apply (rem_5216 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5221 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5220 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_21;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5222 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5223 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5222 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5224 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5218 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5223 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5225 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5224 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5226 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5221 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5225 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5227 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5226 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5228 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5216 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5227 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5229 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5228 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5230 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5229 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5219 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5231 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5230 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5232 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5231 X1 X2 X3 X4).
Qed.

Remark rem_5233 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5234 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5235 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5236 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5237 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5234 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5235 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5236 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5233 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5238 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5237 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_40;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5239 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5240 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5239 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5241 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5235 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5240 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5242 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5241 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5243 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5238 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5242 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5244 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5243 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5245 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5233 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5244 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5246 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5245 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5247 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5246 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5236 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5248 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5247 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5249 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5248 X1 X2 X3 X4).
Qed.

Remark rem_5250 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_5251 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5252 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5253 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5254 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q3 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5251 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5252 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5253 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X1). 2:apply (rem_5250 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5255 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5254 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_21;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5256 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5257 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5256 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5258 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5252 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5257 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5259 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5258 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5260 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5255 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5259 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5261 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5260 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5262 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5250 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5261 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5263 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5262 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5264 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5263 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5253 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5265 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5264 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5266 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5265 X1 X2 X3 X4).
Qed.

Remark rem_5267 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5268 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5269 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5270 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5271 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5268 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5269 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5270 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5267 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5272 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5271 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_43;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5273 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5274 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5273 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5275 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5269 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5274 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5276 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5275 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5277 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5272 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5276 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5278 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5277 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5279 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5267 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5278 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5280 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5279 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5281 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5280 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5270 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5282 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5281 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5283 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5282 X1 X2 X3 X4).
Qed.

Remark rem_5284 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X2 nil) H);  intros.
  apply (rem_5215 X1 X2 X3 X4);  tauto.
  apply (rem_5232 X1 X2 X3 X4);  tauto.
  apply (rem_5249 X1 X2 X3 X4);  tauto.
  apply (rem_5266 X1 X2 X3 X4);  tauto.
  apply (rem_5283 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5285 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5284 X1 X2 X3 X4).
Qed.

Remark rem_5286 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5285 X1 X2 X3 X4).
Qed.

Remark rem_5287 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_4145 X1 X2 X3 X4);  tauto.
  apply (rem_5198 X1 X2 X3 X4);  tauto.
  apply (rem_5286 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5288 : forall X1 X2 X3 X4:term, auto__q3 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5287 X1 X2 X3 X4).
Qed.

Remark rem_5289 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5290 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5291 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5292 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5293 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5290 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5291 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5292 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5289 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5294 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5293 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_10;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5295 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5296 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5295 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5297 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5291 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5296 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5298 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5297 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5299 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5294 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5298 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5300 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5299 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5301 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5289 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5300 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5302 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5301 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5303 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5302 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5292 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5304 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5303 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5305 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5304 X1 X2 X3 X4).
Qed.

Remark rem_5306 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5307 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5308 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5309 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5310 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5307 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5308 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5309 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5306 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5311 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5310 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_10;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5312 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5313 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5312 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5314 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5308 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5313 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5315 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5314 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5316 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5311 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5315 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5317 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5316 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5318 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5306 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5317 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5319 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5318 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5320 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5319 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5309 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5321 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5320 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5322 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5321 X1 X2 X3 X4).
Qed.

Remark rem_5323 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5324 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5325 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5326 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5327 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5324 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5325 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5326 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5323 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5328 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5327 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_17;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5329 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5330 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5329 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5331 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5325 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5330 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5332 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5331 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5333 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5328 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5332 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5334 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5333 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5335 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5323 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5334 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5336 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5335 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5337 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5336 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5326 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5338 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5337 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5339 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5338 X1 X2 X3 X4).
Qed.

Remark rem_5340 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X2 nil) H);  intros.
  apply (rem_5305 X1 X2 X3 X4);  tauto.
  apply (rem_5322 X1 X2 X3 X4);  tauto.
  apply (rem_5339 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5341 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5340 X1 X2 X3 X4).
Qed.

Remark rem_5342 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5341 X1 X2 X3 X4).
Qed.

Remark rem_5343 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_5196 X3)). tauto.
Qed.

Remark rem_5344 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5343 X1 X2 X3 X4).
Qed.

Remark rem_5345 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5346 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5347 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5348 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5349 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5346 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5347 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5348 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5345 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5350 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5349 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_40;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5351 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5352 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5351 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5353 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5347 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5352 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5354 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5353 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5355 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5350 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5354 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5356 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5355 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5357 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5345 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5356 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5358 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5357 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5359 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5358 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5348 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5360 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5359 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5361 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5360 X1 X2 X3 X4).
Qed.

Remark rem_5362 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5363 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5364 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5365 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5366 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5363 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5364 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5365 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5362 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5367 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5366 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_40;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5368 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5369 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5368 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5370 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5364 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5369 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5371 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5370 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5372 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5367 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5371 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5373 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5372 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5374 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5362 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5373 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5375 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5374 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5376 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5375 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5365 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5377 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5376 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5378 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5377 X1 X2 X3 X4).
Qed.

Remark rem_5379 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5380 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5381 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5382 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5383 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> (auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5380 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5381 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5382 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5379 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5384 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5383 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_43;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5385 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5386 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5385 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5387 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5381 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5386 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5388 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5387 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5389 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5384 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5388 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5390 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5389 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5391 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5379 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5390 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5392 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5391 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5393 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5392 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5382 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5394 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5393 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5395 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5394 X1 X2 X3 X4).
Qed.

Remark rem_5396 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X2 nil) H);  intros.
  apply (rem_5361 X1 X2 X3 X4);  tauto.
  apply (rem_5378 X1 X2 X3 X4);  tauto.
  apply (rem_5395 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5397 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5396 X1 X2 X3 X4).
Qed.

Remark rem_5398 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5397 X1 X2 X3 X4).
Qed.

Remark rem_5399 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_5342 X1 X2 X3 X4);  tauto.
  apply (rem_5344 X1 X2 X3 X4);  tauto.
  apply (rem_5398 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5400 : forall X1 X2 X3 X4:term, auto__q2 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5399 X1 X2 X3 X4).
Qed.

Remark rem_5401 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5402 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5403 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_5404 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5405 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5402 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5403 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5404 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5401 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5406 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5405 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_37;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5407 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5408 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5407 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5409 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q3 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X3). 2:apply (rem_5403 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5408 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5410 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5409 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5411 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5406 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_5410 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5412 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5411 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5413 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5401 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5412 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5414 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5413 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5415 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5414 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5404 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5416 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5415 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5417 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5416 X1 X2 X3 X4).
Qed.

Remark rem_5418 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5419 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5420 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5421 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5422 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5419 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5420 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5421 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5418 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5423 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5422 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_43;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5424 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5425 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5424 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5426 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5420 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5425 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5427 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5426 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5428 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5423 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5427 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5429 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5428 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5430 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5418 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5429 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5431 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5430 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5432 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5431 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5421 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5433 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5432 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5434 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5433 X1 X2 X3 X4).
Qed.

Remark rem_5435 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_4351 pub X3 H);  intros.
  apply (rem_5417 X1 X2 X3 X4);  tauto.
  apply (rem_5434 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5436 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 nil -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5435 X1 X2 X3 X4).
Qed.

Remark rem_5437 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 nil -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5436 X1 X2 X3 X4).
Qed.

Remark rem_5438 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5435 X1 X2 X3 X4).
Qed.

Remark rem_5439 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5438 X1 X2 X3 X4).
Qed.

Remark rem_5440 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_5441 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5440 X1 X2 X3 X4).
Qed.

Remark rem_5442 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_5437 X1 X2 X3 X4);  tauto.
  apply (rem_5439 X1 X2 X3 X4);  tauto.
  apply (rem_5441 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5443 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5442 X1 X2 X3 X4).
Qed.

Remark rem_5444 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X2 nil) H);  intros.
  apply (rem_5443 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5445 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q3 (key pub X3) -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5444 X1 X2 X3 X4).
Qed.

Remark rem_5446 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5447 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5448 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5449 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5450 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5447 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5448 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5449 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5446 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5451 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5450 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_17;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5452 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5453 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5452 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5454 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5448 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5453 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5455 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5454 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5456 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5451 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5455 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5457 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5456 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5458 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5446 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5457 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5459 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5458 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5460 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5459 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5449 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5461 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5460 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5462 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5461 X1 X2 X3 X4).
Qed.

Remark rem_5463 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5464 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5465 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_5466 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5467 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5464 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5465 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5466 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5463 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5468 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5467 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_37;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5469 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5470 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5469 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5471 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X3). 2:apply (rem_5465 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5470 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5472 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5471 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5473 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5468 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_5472 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5474 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5473 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5475 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5463 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5474 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5476 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5475 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5477 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5476 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5466 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5478 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5477 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5479 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5478 X1 X2 X3 X4).
Qed.

Remark rem_5480 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5481 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5482 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5483 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5484 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5481 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5482 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5483 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5480 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5485 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5484 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_43;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5486 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5487 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5486 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5488 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5482 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5487 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5489 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5488 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5490 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5485 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5489 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5491 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5490 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5492 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5480 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5491 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5493 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5492 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5494 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5493 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5483 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5495 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5494 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5496 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5495 X1 X2 X3 X4).
Qed.

Remark rem_5497 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5498 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5499 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5500 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5501 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X2). 2:apply (rem_5498 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5499 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5500 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5497 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5502 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5501 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_17;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5503 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5504 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5503 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5505 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5499 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5504 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5506 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5505 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5507 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5502 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5506 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5508 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5507 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5509 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5497 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5508 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5510 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5509 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5511 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5510 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5500 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5512 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5511 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5513 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5512 X1 X2 X3 X4).
Qed.

Remark rem_5514 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_120 pub X3 H);  intros.
  apply (rem_5462 X1 X2 X3 X4);  tauto.
  apply (rem_5479 X1 X2 X3 X4);  tauto.
  apply (rem_5496 X1 X2 X3 X4);  tauto.
  apply (rem_5513 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5515 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5514 X1 X2 X3 X4).
Qed.

Remark rem_5516 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5515 X1 X2 X3 X4).
Qed.

Remark rem_5517 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5514 X1 X2 X3 X4).
Qed.

Remark rem_5518 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5517 X1 X2 X3 X4).
Qed.

Remark rem_5519 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_5520 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5519 X1 X2 X3 X4).
Qed.

Remark rem_5521 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_5516 X1 X2 X3 X4);  tauto.
  apply (rem_5518 X1 X2 X3 X4);  tauto.
  apply (rem_5520 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5522 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5521 X1 X2 X3 X4).
Qed.

Remark rem_5523 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X2 nil) H);  intros.
  apply (rem_5522 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5524 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5523 X1 X2 X3 X4).
Qed.

Remark rem_5525 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5526 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5527 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5528 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5529 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q2 X2). 2:apply (rem_5526 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5527 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5528 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5525 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5530 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5529 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q2_nonceb_old_17;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5531 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  tauto.
Qed.

Remark rem_5532 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5531 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5533 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q2 X3). 2:apply (rem_5527 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5532 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5534 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5533 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5535 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5530 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5534 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5536 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5535 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5537 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X1). 2:apply (rem_5525 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5536 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5538 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5537 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5539 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5538 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5528 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5540 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5539 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5541 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5540 X1 X2 X3 X4).
Qed.

Remark rem_5542 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5543 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5544 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_5545 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5546 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q2 X2). 2:apply (rem_5543 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5544 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5545 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5542 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5547 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5546 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_nonceb_old_37;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5548 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  tauto.
Qed.

Remark rem_5549 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5548 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5550 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q3 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q3 X3). 2:apply (rem_5544 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5549 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5551 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5550 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5552 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5547 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_5551 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5553 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5552 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5554 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X1). 2:apply (rem_5542 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5553 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5555 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5554 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5556 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5555 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5545 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5557 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5556 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5558 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5557 X1 X2 X3 X4).
Qed.

Remark rem_5559 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5560 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_3022 X2).
Qed.

Remark rem_5561 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5562 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5563 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q2 X2). 2:apply (rem_5560 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5561 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5562 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5559 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5564 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5563 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_nonceb_old_43;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5565 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  tauto.
Qed.

Remark rem_5566 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5565 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5567 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X3). 2:apply (rem_5561 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5566 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5568 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5567 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5569 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5564 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5568 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5570 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5569 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5571 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X1). 2:apply (rem_5559 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5570 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5572 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5571 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5573 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5572 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5562 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5574 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5573 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5575 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5574 X1 X2 X3 X4).
Qed.

Remark rem_5576 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_5541 X1 X2 X3 X4);  tauto.
  apply (rem_5558 X1 X2 X3 X4);  tauto.
  apply (rem_5575 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5577 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5576 X1 X2 X3 X4).
Qed.

Remark rem_5578 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X2 nil) H);  intros.
  apply (rem_5577 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5579 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5578 X1 X2 X3 X4).
Qed.

Remark rem_5580 : forall X1 X2:term, auto_knows_old (crypt X1 X2) -> or_6
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q1 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_5581 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_5580 (cons X1 (cons X2 nil)) (key pub X3) H);  intros.
  apply (rem_4057 X1 X2 X3 X4);  tauto.
  apply (rem_5288 X1 X2 X3 X4);  tauto.
  apply (rem_5400 X1 X2 X3 X4);  tauto.
  apply (rem_5445 X1 X2 X3 X4);  tauto.
  apply (rem_5524 X1 X2 X3 X4);  tauto.
  apply (rem_5579 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5582 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5581 X1 X2 X3 X4).
Qed.

Remark rem_5583 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X4 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5582 X1 X2 X3 X4).
Qed.

Remark rem_5584 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 nil -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5581 X1 X2 X3 X4).
Qed.

Remark rem_5585 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X4 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 nil -> auto__q2 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5584 X1 X2 X3 X4).
Qed.

Remark rem_5586 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4048 X1 X2 X3 X4).
Qed.

Remark rem_5587 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4044 X1 X2 X3 X4).
Qed.

Remark rem_5588 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5589 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5590 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5591 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5592 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5589 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5590 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5591 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5588 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5593 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5592 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_24;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5594 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5595 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5594 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5596 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5590 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5595 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5597 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5596 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5598 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5593 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5597 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5599 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5598 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5600 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5588 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5599 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5601 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5600 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5602 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5601 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5591 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5603 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5602 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5604 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5603 X1 X2 X3 X4).
Qed.

Remark rem_5605 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5606 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5607 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_5608 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5609 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5606 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5607 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5608 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5605 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5610 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5609 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_28;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5611 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5612 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5611 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5613 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X3). 2:apply (rem_5607 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5612 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5614 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5613 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5615 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5610 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_5614 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5616 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5615 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5617 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5605 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5616 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5618 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5617 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5619 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5618 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5608 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5620 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5619 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5621 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5620 X1 X2 X3 X4).
Qed.

Remark rem_5622 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5623 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5624 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5625 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5626 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5623 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5624 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5625 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5622 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5627 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5626 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_26;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5628 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5629 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5628 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5630 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5624 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5629 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5631 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5630 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5632 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5627 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5631 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5633 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5632 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5634 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5622 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5633 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5635 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5634 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5636 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5635 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5625 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5637 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5636 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5638 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5637 X1 X2 X3 X4).
Qed.

Remark rem_5639 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5640 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5641 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5642 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5643 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5640 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5641 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5642 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5639 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5644 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5643 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_24;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5645 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5646 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5645 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5647 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5641 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5646 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5648 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5647 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5649 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5644 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5648 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5650 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5649 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5651 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5639 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5650 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5652 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5651 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5653 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5652 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5642 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5654 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5653 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5655 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5654 X1 X2 X3 X4).
Qed.

Remark rem_5656 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_120 pub X3 H);  intros.
  apply (rem_5604 X1 X2 X3 X4);  tauto.
  apply (rem_5621 X1 X2 X3 X4);  tauto.
  apply (rem_5638 X1 X2 X3 X4);  tauto.
  apply (rem_5655 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5657 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 nil -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5656 X1 X2 X3 X4).
Qed.

Remark rem_5658 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 nil -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5657 X1 X2 X3 X4).
Qed.

Remark rem_5659 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_5586 X1 X2 X3 X4);  tauto.
  apply (rem_5587 X1 X2 X3 X4);  tauto.
  apply (rem_5658 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5660 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5659 X1 X2 X3 X4).
Qed.

Remark rem_5661 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5656 X1 X2 X3 X4).
Qed.

Remark rem_5662 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5661 X1 X2 X3 X4).
Qed.

Remark rem_5663 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X2 nil H);  intros.
  apply (rem_5662 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5664 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5663 X1 X2 X3 X4).
Qed.

Remark rem_5665 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5666 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5667 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5668 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5669 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5666 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5667 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5668 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5665 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5670 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5669 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_31;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5671 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5672 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5671 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5673 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5667 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5672 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5674 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5673 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5675 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5670 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5674 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5676 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5675 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5677 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5665 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5676 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5678 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5677 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5679 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5678 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5668 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5680 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5679 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5681 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5680 X1 X2 X3 X4).
Qed.

Remark rem_5682 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5683 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5684 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_5685 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5686 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5683 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5684 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5685 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5682 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5687 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5686 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_9;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5688 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5689 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5688 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5690 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X3). 2:apply (rem_5684 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5689 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5691 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5690 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5692 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5687 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_5691 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5693 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5692 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5694 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5682 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5693 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5695 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5694 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5696 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5695 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5685 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5697 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5696 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5698 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5697 X1 X2 X3 X4).
Qed.

Remark rem_5699 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5700 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5701 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5702 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5703 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5700 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5701 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5702 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5699 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5704 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5703 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5705 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5706 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5705 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5707 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5701 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5706 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5708 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5707 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5709 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5704 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5708 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5710 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5709 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5711 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5699 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5710 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5712 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5711 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5713 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5712 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5702 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5714 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5713 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5715 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5714 X1 X2 X3 X4).
Qed.

Remark rem_5716 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5717 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5718 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5719 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5720 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> (auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5717 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5718 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5719 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5716 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5721 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5720 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_31;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5722 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5723 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5722 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5724 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5718 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5723 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5725 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5724 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5726 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5721 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5725 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5727 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5726 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5728 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5716 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5727 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5729 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5728 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5730 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5729 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5719 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5731 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5730 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5732 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5731 X1 X2 X3 X4).
Qed.

Remark rem_5733 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_120 pub X3 H);  intros.
  apply (rem_5681 X1 X2 X3 X4);  tauto.
  apply (rem_5698 X1 X2 X3 X4);  tauto.
  apply (rem_5715 X1 X2 X3 X4);  tauto.
  apply (rem_5732 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5734 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5733 X1 X2 X3 X4).
Qed.

Remark rem_5735 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5734 X1 X2 X3 X4).
Qed.

Remark rem_5736 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_689 X2 nil H);  intros.
  apply (rem_5735 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5737 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5736 X1 X2 X3 X4).
Qed.

Remark rem_5738 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X2 nil) H);  intros.
  apply (rem_5660 X1 X2 X3 X4);  tauto.
  apply (rem_5664 X1 X2 X3 X4);  tauto.
  apply (rem_5737 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5739 : forall X1 X2 X3 X4:term, auto__q2 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5738 X1 X2 X3 X4).
Qed.

Remark rem_5740 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_5741 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5742 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5743 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5744 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q3 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5741 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5742 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5743 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X1). 2:apply (rem_5740 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5745 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5744 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_18;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5746 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5747 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5746 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5748 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5742 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5747 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5749 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5748 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5750 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5745 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5749 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5751 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5750 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5752 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5740 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5751 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5753 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5752 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5754 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5753 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5743 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5755 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5754 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5756 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5755 X1 X2 X3 X4).
Qed.

Remark rem_5757 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_5758 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5759 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5760 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5761 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> (auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q3 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5758 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5759 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5760 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X1). 2:apply (rem_5757 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5762 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5761 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_18;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5763 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5764 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5763 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5765 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5759 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5764 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5766 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5765 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5767 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5762 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5766 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5768 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5767 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5769 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5757 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5768 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5770 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5769 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5771 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5770 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5760 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5772 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5771 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5773 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5772 X1 X2 X3 X4).
Qed.

Remark rem_5774 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5775 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5776 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5777 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5778 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5775 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5776 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5777 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5774 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5779 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5778 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_24;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5780 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5781 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5780 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5782 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5776 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5781 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5783 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5782 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5784 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5779 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5783 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5785 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5784 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5786 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5774 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5785 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5787 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5786 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5788 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5787 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5777 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5789 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5788 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5790 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5789 X1 X2 X3 X4).
Qed.

Remark rem_5791 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_5792 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5793 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5794 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5795 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q3 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5792 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5793 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5794 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X1). 2:apply (rem_5791 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5796 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5795 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_18;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5797 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5798 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5797 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5799 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5793 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5798 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5800 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5799 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5801 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5796 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5800 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5802 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5801 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5803 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5791 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5802 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5804 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5803 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5805 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5804 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5794 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5806 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5805 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5807 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5806 X1 X2 X3 X4).
Qed.

Remark rem_5808 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5809 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5810 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5811 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5812 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5809 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5810 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5811 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5808 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5813 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5812 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_31;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5814 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5815 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5814 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5816 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5810 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5815 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5817 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5816 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5818 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5813 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5817 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5819 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5818 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5820 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5808 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5819 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5821 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5820 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5822 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5821 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5811 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5823 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5822 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5824 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5823 X1 X2 X3 X4).
Qed.

Remark rem_5825 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X2 nil) H);  intros.
  apply (rem_5756 X1 X2 X3 X4);  tauto.
  apply (rem_5773 X1 X2 X3 X4);  tauto.
  apply (rem_5790 X1 X2 X3 X4);  tauto.
  apply (rem_5807 X1 X2 X3 X4);  tauto.
  apply (rem_5824 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5826 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5825 X1 X2 X3 X4).
Qed.

Remark rem_5827 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5826 X1 X2 X3 X4).
Qed.

Remark rem_5828 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_5196 X3)). tauto.
Qed.

Remark rem_5829 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5828 X1 X2 X3 X4).
Qed.

Remark rem_5830 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_5831 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5832 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5833 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5834 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q3 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5831 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5832 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5833 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X1). 2:apply (rem_5830 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5835 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5834 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_29;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5836 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5837 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5836 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5838 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5832 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5837 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5839 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5838 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5840 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5835 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5839 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5841 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5840 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5842 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5830 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5841 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5843 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5842 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5844 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5843 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5833 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5845 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5844 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5846 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5845 X1 X2 X3 X4).
Qed.

Remark rem_5847 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_5848 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5849 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5850 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5851 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q3 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5848 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5849 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5850 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X1). 2:apply (rem_5847 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5852 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5851 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_29;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5853 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5854 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5853 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5855 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5849 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5854 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5856 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5855 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5857 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5852 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5856 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5858 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5857 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5859 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5847 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5858 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5860 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5859 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5861 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5860 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5850 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5862 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5861 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5863 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5862 X1 X2 X3 X4).
Qed.

Remark rem_5864 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5865 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5866 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5867 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5868 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5865 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5866 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5867 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5864 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5869 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5868 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_26;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5870 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5871 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5870 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5872 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5866 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5871 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5873 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5872 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5874 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5869 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5873 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5875 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5874 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5876 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5864 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5875 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5877 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5876 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5878 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5877 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5867 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5879 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5878 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5880 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5879 X1 X2 X3 X4).
Qed.

Remark rem_5881 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_5882 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5883 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5884 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5885 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q3 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5882 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5883 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5884 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X1). 2:apply (rem_5881 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5886 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5885 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_29;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5887 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5888 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5887 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5889 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5883 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5888 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5890 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5889 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5891 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5886 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5890 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5892 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5891 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5893 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5881 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5892 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5894 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5893 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5895 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5894 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5884 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5896 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5895 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5897 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5896 X1 X2 X3 X4).
Qed.

Remark rem_5898 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5899 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5900 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5901 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5902 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5899 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5900 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5901 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5898 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5903 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5902 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5904 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5905 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5904 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5906 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5900 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5905 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5907 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5906 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5908 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5903 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5907 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5909 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5908 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5910 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5898 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5909 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5911 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5910 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5912 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5911 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5901 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5913 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5912 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5914 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5913 X1 X2 X3 X4).
Qed.

Remark rem_5915 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X2 nil) H);  intros.
  apply (rem_5846 X1 X2 X3 X4);  tauto.
  apply (rem_5863 X1 X2 X3 X4);  tauto.
  apply (rem_5880 X1 X2 X3 X4);  tauto.
  apply (rem_5897 X1 X2 X3 X4);  tauto.
  apply (rem_5914 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5916 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5915 X1 X2 X3 X4).
Qed.

Remark rem_5917 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5916 X1 X2 X3 X4).
Qed.

Remark rem_5918 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_5827 X1 X2 X3 X4);  tauto.
  apply (rem_5829 X1 X2 X3 X4);  tauto.
  apply (rem_5917 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5919 : forall X1 X2 X3 X4:term, auto__q3 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5918 X1 X2 X3 X4).
Qed.

Remark rem_5920 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5921 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5922 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5923 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5924 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5921 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5922 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5923 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5920 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5925 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5924 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_24;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5926 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5927 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5926 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5928 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5922 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5927 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5929 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5928 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5930 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5925 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5929 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5931 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5930 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5932 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5920 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5931 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5933 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5932 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5934 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5933 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5923 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5935 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5934 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5936 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5935 X1 X2 X3 X4).
Qed.

Remark rem_5937 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5938 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5939 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5940 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5941 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5938 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5939 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5940 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5937 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5942 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5941 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_24;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5943 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5944 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5943 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5945 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5939 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5944 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5946 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5945 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5947 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5942 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5946 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5948 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5947 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5949 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5937 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5948 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5950 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5949 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5951 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5950 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5940 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5952 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5951 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5953 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5952 X1 X2 X3 X4).
Qed.

Remark rem_5954 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_5955 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5956 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_5957 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5958 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> (auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5955 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5956 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5957 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_5954 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5959 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5958 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_old_31;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5960 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5961 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5960 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5962 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X3). 2:apply (rem_5956 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5961 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5963 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5962 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5964 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5959 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5963 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5965 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5964 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5966 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5954 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5965 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5967 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5966 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5968 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5967 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5957 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5969 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5968 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5970 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5969 X1 X2 X3 X4).
Qed.

Remark rem_5971 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X2 nil) H);  intros.
  apply (rem_5936 X1 X2 X3 X4);  tauto.
  apply (rem_5953 X1 X2 X3 X4);  tauto.
  apply (rem_5970 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5972 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5971 X1 X2 X3 X4).
Qed.

Remark rem_5973 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5972 X1 X2 X3 X4).
Qed.

Remark rem_5974 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_5196 X3)). tauto.
Qed.

Remark rem_5975 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5974 X1 X2 X3 X4).
Qed.

Remark rem_5976 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5977 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5978 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5979 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5980 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5977 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5978 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5979 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5976 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5981 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5980 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_26;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5982 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_5983 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5982 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5984 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5978 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_5983 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5985 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5984 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5986 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5981 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5985 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5987 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5986 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5988 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5976 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_5987 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5989 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5988 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5990 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_5989 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5979 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5991 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5990 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5992 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5991 X1 X2 X3 X4).
Qed.

Remark rem_5993 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_5994 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_5995 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_5996 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_5997 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> (auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_5994 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5995 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5996 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X1). 2:apply (rem_5993 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5998 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5997 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_26;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5999 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_6000 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5999 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6001 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_5995 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_6000 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6002 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6001 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6003 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_5998 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 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 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6003 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6005 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5993 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6004 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6006 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6005 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6007 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6006 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5996 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6008 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6007 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6009 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6008 X1 X2 X3 X4).
Qed.

Remark rem_6010 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_6011 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_6012 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_6013 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_6014 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_6011 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_6012 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6013 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_6010 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6015 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6014 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6016 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_6017 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6016 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6018 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_6012 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_6017 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6019 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6018 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6020 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_6015 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_6019 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6021 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6020 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6022 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_6010 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6021 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6023 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6022 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6024 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6023 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6013 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6025 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6024 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6026 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6025 X1 X2 X3 X4).
Qed.

Remark rem_6027 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X2 nil) H);  intros.
  apply (rem_5992 X1 X2 X3 X4);  tauto.
  apply (rem_6009 X1 X2 X3 X4);  tauto.
  apply (rem_6026 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6028 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6027 X1 X2 X3 X4).
Qed.

Remark rem_6029 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6028 X1 X2 X3 X4).
Qed.

Remark rem_6030 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_5973 X1 X2 X3 X4);  tauto.
  apply (rem_5975 X1 X2 X3 X4);  tauto.
  apply (rem_6029 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6031 : forall X1 X2 X3 X4:term, auto__q2 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6030 X1 X2 X3 X4).
Qed.

Remark rem_6032 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 nil -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_6033 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 nil -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6032 X1 X2 X3 X4).
Qed.

Remark rem_6034 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5440 X1 X2 X3 X4).
Qed.

Remark rem_6035 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_6036 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_6037 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_6038 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_6039 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_6036 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_6037 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6038 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_6035 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6040 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6039 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_9;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6041 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_6042 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6041 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6043 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q3 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X3). 2:apply (rem_6037 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_6042 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6044 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6043 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6045 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_6040 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_6044 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6046 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6045 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6047 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_6035 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6046 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6048 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6047 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6049 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6048 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6038 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6050 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6049 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6051 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6050 X1 X2 X3 X4).
Qed.

Remark rem_6052 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_6053 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_6054 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_6055 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_6056 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X2). 2:apply (rem_6053 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_6054 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6055 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_6052 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6057 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6056 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_old_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6058 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  tauto.
Qed.

Remark rem_6059 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6058 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6060 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X3). 2:apply (rem_6054 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_6059 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6061 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6060 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6062 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_6057 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_6061 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6063 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6062 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6064 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_6052 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6063 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6065 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6064 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6066 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6065 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6055 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6067 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6066 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6068 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6067 X1 X2 X3 X4).
Qed.

Remark rem_6069 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_4351 pub X3 H);  intros.
  apply (rem_6051 X1 X2 X3 X4);  tauto.
  apply (rem_6068 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6070 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6069 X1 X2 X3 X4).
Qed.

Remark rem_6071 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6070 X1 X2 X3 X4).
Qed.

Remark rem_6072 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_6033 X1 X2 X3 X4);  tauto.
  apply (rem_6034 X1 X2 X3 X4);  tauto.
  apply (rem_6071 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6073 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6072 X1 X2 X3 X4).
Qed.

Remark rem_6074 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X2 nil) H);  intros.
  apply (rem_6073 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6075 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q3 (key pub X3) -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6074 X1 X2 X3 X4).
Qed.

Remark rem_6076 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_4052 X1 X2 X3 X4).
Qed.

Remark rem_6077 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_5519 X1 X2 X3 X4).
Qed.

Remark rem_6078 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_5733 X1 X2 X3 X4).
Qed.

Remark rem_6079 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6078 X1 X2 X3 X4).
Qed.

Remark rem_6080 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_6076 X1 X2 X3 X4);  tauto.
  apply (rem_6077 X1 X2 X3 X4);  tauto.
  apply (rem_6079 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6081 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6080 X1 X2 X3 X4).
Qed.

Remark rem_6082 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X2 nil) H);  intros.
  apply (rem_6081 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6083 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6082 X1 X2 X3 X4).
Qed.

Remark rem_6084 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_6085 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_6086 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3102 X3).
Qed.

Remark rem_6087 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_6088 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X2). 2:apply (rem_6085 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_6086 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6087 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_6084 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6089 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q2 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6088 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q2_nonceb_old_31;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6090 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  tauto.
Qed.

Remark rem_6091 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6090 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6092 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q2 X3). 2:apply (rem_6086 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_6091 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6093 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6092 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6094 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q2 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q2 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_6089 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_6093 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6095 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6094 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6096 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X1). 2:apply (rem_6084 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6095 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6097 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6096 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6098 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6097 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6087 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6099 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6098 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6100 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6099 X1 X2 X3 X4).
Qed.

Remark rem_6101 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_6102 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_6103 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3045 X3).
Qed.

Remark rem_6104 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_6105 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X2). 2:apply (rem_6102 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_6103 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6104 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_6101 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6106 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6105 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_nonceb_old_9;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6107 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  tauto.
Qed.

Remark rem_6108 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6107 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6109 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q3 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q3 X3). 2:apply (rem_6103 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_6108 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6110 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6109 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6111 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_6106 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_6110 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6112 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6111 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6113 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X1). 2:apply (rem_6101 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6112 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6114 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6113 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6115 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q3 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6114 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6104 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6116 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6115 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6117 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6116 X1 X2 X3 X4).
Qed.

Remark rem_6118 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_6119 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_6120 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_2981 X3).
Qed.

Remark rem_6121 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_3342 X4).
Qed.

Remark rem_6122 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4 /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X2). 2:apply (rem_6119 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_6120 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6121 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X1). 2:apply (rem_6118 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6123 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 (nonceb_old X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6122 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_nonceb_old_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6124 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  tauto.
Qed.

Remark rem_6125 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6124 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6126 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X3 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X3). 2:apply (rem_6120 X1 X2 X3 X4);  assumption.
  cut (auto__q1 nil). 2:apply (rem_6125 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6127 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X3 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6126 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6128 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (nonceb_old X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 (nonceb_old X2 X3 X4 X1)). 2:apply (rem_6123 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_6127 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6129 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6128 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6130 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X1 /\ auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X1). 2:apply (rem_6118 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6129 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6131 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6130 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6132 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q2 (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6131 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6121 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6133 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6132 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6134 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6133 X1 X2 X3 X4).
Qed.

Remark rem_6135 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (key pub X3) -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_6100 X1 X2 X3 X4);  tauto.
  apply (rem_6117 X1 X2 X3 X4);  tauto.
  apply (rem_6134 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6136 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (key pub X3) -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6135 X1 X2 X3 X4).
Qed.

Remark rem_6137 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X2 nil) H);  intros.
  apply (rem_6136 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6138 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6137 X1 X2 X3 X4).
Qed.

Remark rem_6139 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_5580 (cons X1 (cons X2 nil)) (key pub X3) H);  intros.
  apply (rem_5739 X1 X2 X3 X4);  tauto.
  apply (rem_5919 X1 X2 X3 X4);  tauto.
  apply (rem_6031 X1 X2 X3 X4);  tauto.
  apply (rem_6075 X1 X2 X3 X4);  tauto.
  apply (rem_6083 X1 X2 X3 X4);  tauto.
  apply (rem_6138 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6140 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6139 X1 X2 X3 X4).
Qed.

Remark rem_6141 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X4 -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 nil -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6140 X1 X2 X3 X4).
Qed.

Remark rem_6142 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_5583 X1 X2 X3 X4);  tauto.
  apply (rem_5585 X1 X2 X3 X4);  tauto.
  apply (rem_6141 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6143 : forall X1 X2 X3 X4:term, auto__q1 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_689 X4 (cons X2 nil) H);  intros.
  apply (rem_6142 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6144 : forall X1 X2 X3 X4:term, auto__q1 (cons X4 (cons X2 nil)) -> auto__q3 (key prv server) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6143 X1 X2 X3 X4).
Qed.

Remark rem_6145 : forall X1 X2 X3 X4:term, auto__q1 (cons X4 (cons X2 nil)) -> auto__q2 (key prv server) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6143 X1 X2 X3 X4).
Qed.

Remark rem_6146 : forall X1 X2 X3 X4:term, auto__q1 (cons X4 (cons X2 nil)) -> auto__q1 (key prv server) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6143 X1 X2 X3 X4).
Qed.

Remark rem_6147 : forall X1 X2 X3 X4:term, auto_agent X3 -> auto_knows_old (crypt (cons X4 (cons X2 nil)) (key prv server)) -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_5580 (cons X4 (cons X2 nil)) (key prv server) H);  intros.
  apply (rem_3966 X1 X2 X3 X4);  tauto.
  apply (rem_3968 X1 X2 X3 X4);  tauto.
  apply (rem_3970 X1 X2 X3 X4);  tauto.
  apply (rem_6144 X1 X2 X3 X4);  tauto.
  apply (rem_6145 X1 X2 X3 X4);  tauto.
  apply (rem_6146 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6148 : forall _big_a _big_b _big_kPa _big_na:term, auto_knows_old (crypt (cons _big_na (cons _big_a nil)) (key pub _big_b)) -> auto_agent _big_b -> auto_knows_old (crypt (cons _big_kPa (cons _big_a nil)) (key prv server)) -> auto_knows_old (crypt (cons _big_na (cons (nonceb_old _big_a _big_b _big_kPa _big_na) (cons _big_b nil))) _big_kPa). (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X3 X4 X1.
  cut (auto_agent X3 -> auto_knows_old (crypt (cons X4 (cons X2 nil)) (key prv server)) -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_old (crypt (cons X1 (cons (nonceb_old X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6147 X1 X2 X3 X4).
Qed.

Remark rem_6149 : auto_agent bob. (* Deduce positive atom. *)
Proof.
   case rem_1. intros. apply trans_agent_bob_1;  tauto.
 tauto.
Qed.

Remark rem_6150 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_6151 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_6152 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_6153 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6152 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6154 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> (auto__q1 X2 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X2). 2:apply (rem_6151 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_6153 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6155 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> auto__q2 (cons X2 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6154 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6156 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> (auto__q1 X1 /\ auto__q2 (cons X2 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_6150 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X2 nil)). 2:apply (rem_6155 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6157 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> auto__q1 (cons X1 (cons X2 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6156 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6158 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> auto__q2 prv. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6152 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_prv_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6159 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> auto__q1 server. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6152 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_server_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6160 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> (auto__q2 prv /\ auto__q1 server) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 prv). 2:apply (rem_6158 X1 X2 X3);  assumption.
  cut (auto__q1 server). 2:apply (rem_6159 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6161 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> auto__q3 (key prv server). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6160 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_key_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6162 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> (auto__q1 (cons X1 (cons X2 nil)) /\ auto__q3 (key prv server)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons X1 (cons X2 nil))). 2:apply (rem_6157 X1 X2 X3);  assumption.
  cut (auto__q3 (key prv server)). 2:apply (rem_6161 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6163 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key prv server)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6162 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6164 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (cons X3 (cons X2 nil)) -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key prv server)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X3 (cons X2 nil)) -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key prv server))). tauto. exact (rem_6163 X1 X2 X3).
Qed.

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

Remark rem_6166 : forall X1 X2 X3:term, auto_has_pub_key X1 X2 -> auto_knows_old (cons X3 (cons X2 nil)) -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key prv server)). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_6165 X1 X2 H);  intros.
  apply (rem_6164 X1 X2 X3);  tauto.
Qed.

Remark rem_6167 : forall _big_a _big_b _big_ka:term, auto_has_pub_key _big_ka _big_a -> auto_knows_old (cons _big_b (cons _big_a nil)) -> auto_knows_old (crypt (cons _big_ka (cons _big_a nil)) (key prv server)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X3 X1.
  cut (auto_has_pub_key X1 X2 -> auto_knows_old (cons X3 (cons X2 nil)) -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key prv server))). tauto. exact (rem_6166 X1 X2 X3).
Qed.

Remark rem_6168 : forall X1 X2:term, auto__q2 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__q2 X1 -> auto_knows_old X1). tauto. exact (rem_2490 X1).
Qed.

Remark rem_6169 : auto__q3 pub -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_5193 H);  intros.
Qed.

Remark rem_6170 : forall X1:term, auto__q2 X1 -> auto__q3 pub -> auto_knows_old (key prv X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 pub -> False). tauto.
  exact (rem_6169).
Qed.

Remark rem_6171 : forall X1:term, auto__q3 pub -> auto__q2 X1 -> auto_knows_old (key prv X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q3 pub -> auto_knows_old (key prv X1) -> False). tauto. exact (rem_6170 X1).
Qed.

Remark rem_6172 : forall X1:term, auto__q2 X1 -> auto__q2 prv -> auto__q3 X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_1117 X1)). tauto.
Qed.

Remark rem_6173 : forall X1:term, auto__q2 prv -> auto__q2 X1 -> auto__q3 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q2 prv -> auto__q3 X1 -> False). tauto. exact (rem_6172 X1).
Qed.

Remark rem_6174 : forall X1:term, auto__q3 X1 -> auto__q3 prv -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 prv -> False). tauto.
  exact (rem_1028).
Qed.

Remark rem_6175 : forall X1:term, auto__q3 prv -> auto__q3 X1 -> auto__q3 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q3 X1 -> auto__q3 prv -> False). tauto. exact (rem_6174 X1).
Qed.

Remark rem_6176 : forall X1:term, auto__q1 X1 -> auto__q3 X1 -> auto__q3 prv -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_1241 X1)). tauto.
Qed.

Remark rem_6177 : forall X1:term, auto__q3 prv -> auto__q1 X1 -> auto__q3 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q3 X1 -> auto__q3 prv -> False). tauto. exact (rem_6176 X1).
Qed.

Remark rem_6178 : forall X1:term, auto__q2 X1 -> auto__q3 X1 -> auto__q3 prv -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_1117 X1)). tauto.
Qed.

Remark rem_6179 : forall X1:term, auto__q3 prv -> auto__q2 X1 -> auto__q3 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q3 X1 -> auto__q3 prv -> False). tauto. exact (rem_6178 X1).
Qed.

Remark rem_6180 : forall X1:term, auto__q1 prv -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 prv -> False). tauto.
  exact (rem_1032).
Qed.

Remark rem_6181 : forall X1:term, auto__q1 prv -> auto__q3 X1 -> auto__q3 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 prv -> auto__q3 X1 -> False). tauto. exact (rem_6180 X1).
Qed.

Remark rem_6182 : forall X1:term, auto__q1 prv -> auto__q2 X1 -> auto__q3 X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_1117 X1)). tauto.
Qed.

Remark rem_6183 : forall X1:term, auto__q1 X1 -> auto__q1 prv -> auto__q3 X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_1241 X1)). tauto.
Qed.

Remark rem_6184 : forall X1:term, auto__q1 prv -> auto__q1 X1 -> auto__q3 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q1 prv -> auto__q3 X1 -> False). tauto. exact (rem_6183 X1).
Qed.

Remark rem_6185 : forall X1 X2:term, auto_knows_old (key X1 X2) -> or_7
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q3 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q3 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q1 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_7_intro_1; tauto.
  intros. apply or_7_intro_2; tauto.
  intros. apply or_7_intro_3; tauto.
  intros. apply or_7_intro_4; tauto.
  intros. apply or_7_intro_5; tauto.
  intros. apply or_7_intro_6; tauto.
  intros. apply or_7_intro_7; tauto.
Qed.

Remark rem_6186 : forall X1:term, auto__q3 X1 -> auto_knows_old (key prv X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intros H1. intro H. intros.
  elim (rem_6185 prv X1 H);  intros.
  apply (rem_6173 X1);  tauto.
  apply (rem_6175 X1);  tauto.
  apply (rem_6177 X1);  tauto.
  apply (rem_6179 X1);  tauto.
  apply (rem_6181 X1);  tauto.
  apply (rem_6182 X1);  tauto.
  apply (rem_6184 X1);  tauto.
Qed.

Remark rem_6187 : forall X1:term, auto__q1 pub -> auto__q3 X1 -> auto_knows_old (key prv X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 X1 -> auto_knows_old (key prv X1) -> False). tauto.
  exact (rem_6186 X1).
Qed.

Remark rem_6188 : forall X1:term, auto__q1 X1 -> auto__q2 X1 -> auto__q2 prv -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_1130 X1)). tauto.
Qed.

Remark rem_6189 : forall X1:term, auto__q2 prv -> auto__q2 X1 -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q2 X1 -> auto__q2 prv -> False). tauto. exact (rem_6188 X1).
Qed.

Remark rem_6190 : forall X1:term, auto__q3 prv -> auto__q3 X1 -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q3 X1 -> auto__q3 prv -> False). tauto. exact (rem_6176 X1).
Qed.

Remark rem_6191 : forall X1:term, auto__q1 X1 -> auto__q3 prv -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 prv -> False). tauto.
  exact (rem_1028).
Qed.

Remark rem_6192 : forall X1:term, auto__q3 prv -> auto__q1 X1 -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q3 prv -> False). tauto. exact (rem_6191 X1).
Qed.

Remark rem_6193 : forall X1:term, auto__q1 X1 -> auto__q2 X1 -> auto__q3 prv -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_1130 X1)). tauto.
Qed.

Remark rem_6194 : forall X1:term, auto__q3 prv -> auto__q2 X1 -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q2 X1 -> auto__q3 prv -> False). tauto. exact (rem_6193 X1).
Qed.

Remark rem_6195 : forall X1:term, auto__q1 prv -> auto__q3 X1 -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q1 prv -> auto__q3 X1 -> False). tauto. exact (rem_6183 X1).
Qed.

Remark rem_6196 : forall X1:term, auto__q1 X1 -> auto__q1 prv -> auto__q2 X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_1130 X1)). tauto.
Qed.

Remark rem_6197 : forall X1:term, auto__q1 prv -> auto__q2 X1 -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q1 prv -> auto__q2 X1 -> False). tauto. exact (rem_6196 X1).
Qed.

Remark rem_6198 : forall X1:term, auto__q1 X1 -> auto__q1 prv -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 prv -> False). tauto.
  exact (rem_1032).
Qed.

Remark rem_6199 : forall X1:term, auto__q1 prv -> auto__q1 X1 -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q1 prv -> False). tauto. exact (rem_6198 X1).
Qed.

Remark rem_6200 : forall X1:term, auto__q1 X1 -> auto_knows_old (key prv X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intros H1. intro H. intros.
  elim (rem_6185 prv X1 H);  intros.
  apply (rem_6189 X1);  tauto.
  apply (rem_6190 X1);  tauto.
  apply (rem_6192 X1);  tauto.
  apply (rem_6194 X1);  tauto.
  apply (rem_6195 X1);  tauto.
  apply (rem_6197 X1);  tauto.
  apply (rem_6199 X1);  tauto.
Qed.

Remark rem_6201 : forall X1:term, auto__q1 X1 -> auto__q1 pub -> auto_knows_old (key prv X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 X1 -> auto_knows_old (key prv X1) -> False). tauto.
  exact (rem_6200 X1).
Qed.

Remark rem_6202 : forall X1:term, auto__q1 pub -> auto__q1 X1 -> auto_knows_old (key prv X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q1 pub -> auto_knows_old (key prv X1) -> False). tauto. exact (rem_6201 X1).
Qed.

Remark rem_6203 : forall X1:term, auto__q1 (key pub X1) -> auto_knows_old (key prv X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_703 pub X1 H);  intros.
  apply (rem_6171 X1);  tauto.
  apply (rem_6187 X1);  tauto.
  apply (rem_6202 X1);  tauto.
Qed.

Remark rem_6204 : forall X2:term, auto__q1 (key pub X2) -> auto_knows_old (key prv X2) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 (key pub X1) -> auto_knows_old (key prv X1) -> False). tauto. exact (rem_6203 X1).
Qed.

Remark rem_6205 : forall X1 X2:term, auto__q1 (key pub X2) -> auto__q3 X1 -> auto_knows_old (key prv X2) -> auto_knows_old X1. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q1 (key pub X2) -> auto_knows_old (key prv X2) -> False). tauto.
  exact (rem_6204 X2).
Qed.

Remark rem_6206 : forall X1 X2:term, auto__q3 X1 -> auto__q1 (key pub X2) -> auto_knows_old (key prv X2) -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 (key pub X2) -> auto__q3 X1 -> auto_knows_old (key prv X2) -> auto_knows_old X1). tauto. exact (rem_6205 X1 X2).
Qed.

Remark rem_6207 : forall X1 X2:term, auto__q1 (key pub X2) -> auto__q2 X1 -> auto_knows_old (key prv X2) -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto_knows_old X1). tauto. exact (rem_2490 X1).
Qed.

Remark rem_6208 : forall X1 X2:term, auto__q2 X1 -> auto__q1 (key pub X2) -> auto_knows_old (key prv X2) -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 (key pub X2) -> auto__q2 X1 -> auto_knows_old (key prv X2) -> auto_knows_old X1). tauto. exact (rem_6207 X1 X2).
Qed.

Remark rem_6209 : forall X1 X2:term, auto__q1 X1 -> auto__q3 (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_2969 X1).
Qed.

Remark rem_6210 : 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_2969 X1).
Qed.

Remark rem_6211 : 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_2969 X1).
Qed.

Remark rem_6212 : 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_5580 X1 (key pub X2) H);  intros.
  apply (rem_6168 X1 X2);  tauto.
  apply (rem_6206 X1 X2);  tauto.
  apply (rem_6208 X1 X2);  tauto.
  apply (rem_6209 X1 X2);  tauto.
  apply (rem_6210 X1 X2);  tauto.
  apply (rem_6211 X1 X2);  tauto.
Qed.

Remark rem_6213 : 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_6212 X1 X2).
Qed.

Remark rem_6214 : forall X1 X2:term, auto__q2 X1 -> auto__q2 (key sym X2) -> auto_knows_current (key sym X2) -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto_knows_current X1). tauto. exact (rem_520 X1).
Qed.

Remark rem_6215 : auto__q3 sym -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_5191 H);  intros.
Qed.

Remark rem_6216 : forall X1:term, auto__q2 X1 -> auto__q3 sym -> auto_knows_current (key sym X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 sym -> False). tauto.
  exact (rem_6215).
Qed.

Remark rem_6217 : forall X1:term, auto__q3 sym -> auto__q2 X1 -> auto_knows_current (key sym X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q3 sym -> auto_knows_current (key sym X1) -> False). tauto. exact (rem_6216 X1).
Qed.

Remark rem_6218 : auto__q1 sym -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1015 H);  intros.
Qed.

Remark rem_6219 : forall X1:term, auto__q1 sym -> auto__q3 X1 -> auto_knows_current (key sym X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 sym -> False). tauto.
  exact (rem_6218).
Qed.

Remark rem_6220 : forall X1:term, auto__q1 X1 -> auto__q1 sym -> auto_knows_current (key sym X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 sym -> False). tauto.
  exact (rem_6218).
Qed.

Remark rem_6221 : forall X1:term, auto__q1 sym -> auto__q1 X1 -> auto_knows_current (key sym X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q1 sym -> auto_knows_current (key sym X1) -> False). tauto. exact (rem_6220 X1).
Qed.

Remark rem_6222 : forall X1:term, auto__q1 (key sym X1) -> auto_knows_current (key sym X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_703 sym X1 H);  intros.
  apply (rem_6217 X1);  tauto.
  apply (rem_6219 X1);  tauto.
  apply (rem_6221 X1);  tauto.
Qed.

Remark rem_6223 : forall X2:term, auto__q1 (key sym X2) -> auto_knows_current (key sym X2) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 (key sym X1) -> auto_knows_current (key sym X1) -> False). tauto. exact (rem_6222 X1).
Qed.

Remark rem_6224 : forall X1 X2:term, auto__q1 (key sym X2) -> auto__q3 X1 -> auto_knows_current (key sym X2) -> auto_knows_current X1. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q1 (key sym X2) -> auto_knows_current (key sym X2) -> False). tauto.
  exact (rem_6223 X2).
Qed.

Remark rem_6225 : forall X1 X2:term, auto__q3 X1 -> auto__q1 (key sym X2) -> auto_knows_current (key sym X2) -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 (key sym X2) -> auto__q3 X1 -> auto_knows_current (key sym X2) -> auto_knows_current X1). tauto. exact (rem_6224 X1 X2).
Qed.

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

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

Remark rem_6228 : forall X1 X2:term, auto__q1 X1 -> auto__q3 (key sym X2) -> auto_knows_current (key sym X2) -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_current X1). tauto. exact (rem_1017 X1).
Qed.

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

Remark rem_6230 : forall X1 X2:term, auto__q1 X1 -> auto__q1 (key sym X2) -> auto_knows_current (key sym X2) -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_current X1). tauto. exact (rem_1017 X1).
Qed.

Remark rem_6231 : forall X1 X2:term, auto_knows_current (crypt X1 (key sym X2)) -> auto_knows_current (key sym X2) -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1509 X1 (key sym X2) H);  intros.
  apply (rem_6214 X1 X2);  tauto.
  apply (rem_6225 X1 X2);  tauto.
  apply (rem_6227 X1 X2);  tauto.
  apply (rem_6228 X1 X2);  tauto.
  apply (rem_6229 X1 X2);  tauto.
  apply (rem_6230 X1 X2);  tauto.
Qed.

Remark rem_6232 : forall _big_m X:term, auto_knows_current (crypt _big_m (key sym X)) -> auto_knows_current (key sym X) -> auto_knows_current _big_m. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current (crypt X1 (key sym X2)) -> auto_knows_current (key sym X2) -> auto_knows_current X1). tauto. exact (rem_6231 X1 X2).
Qed.

Remark rem_6233 : forall X1:term, auto_knows_current (s X1) -> or_2
    (auto__q1 X1)    (auto__q2 X1).
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_6234 : forall X1:term, auto_knows_current (s X1) -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_6233 X1 H);  intros.
  apply (rem_1017 X1);  tauto.
  apply (rem_520 X1);  tauto.
Qed.

Remark rem_6235 : 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_6234 X1).
Qed.

Remark rem_6236 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_6237 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_6238 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_6239 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6238 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6240 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> (auto__q1 X2 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X2). 2:apply (rem_6237 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_6239 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6241 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> auto__q2 (cons X2 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6240 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6242 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> (auto__q1 X1 /\ auto__q2 (cons X2 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_6236 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X2 nil)). 2:apply (rem_6241 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6243 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> auto__q1 (cons X1 (cons X2 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6242 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6244 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> auto__q2 prv. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6238 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_prv_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6245 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> auto__q1 server. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6238 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_server_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6246 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> (auto__q2 prv /\ auto__q1 server) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 prv). 2:apply (rem_6244 X1 X2 X3);  assumption.
  cut (auto__q1 server). 2:apply (rem_6245 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6247 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> auto__q3 (key prv server). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6246 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_key_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6248 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> (auto__q1 (cons X1 (cons X2 nil)) /\ auto__q3 (key prv server)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons X1 (cons X2 nil))). 2:apply (rem_6243 X1 X2 X3);  assumption.
  cut (auto__q3 (key prv server)). 2:apply (rem_6247 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6249 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key prv server)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6248 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6250 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (cons X3 (cons X2 nil)) -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key prv server)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X3 (cons X2 nil)) -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key prv server))). tauto. exact (rem_6249 X1 X2 X3).
Qed.

Remark rem_6251 : forall X1 X2 X3:term, auto_has_pub_key X1 X2 -> auto_knows_current (cons X3 (cons X2 nil)) -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key prv server)). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_6165 X1 X2 H);  intros.
  apply (rem_6250 X1 X2 X3);  tauto.
Qed.

Remark rem_6252 : forall _big_a _big_b _big_ka:term, auto_has_pub_key _big_ka _big_a -> auto_knows_current (cons _big_b (cons _big_a nil)) -> auto_knows_current (crypt (cons _big_ka (cons _big_a nil)) (key prv server)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X3 X1.
  cut (auto_has_pub_key X1 X2 -> auto_knows_current (cons X3 (cons X2 nil)) -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key prv server))). tauto. exact (rem_6251 X1 X2 X3).
Qed.

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

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

Remark rem_6255 : forall X1 X2:term, auto__q1 X2 -> auto__q1 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_6253 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6254 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6256 : forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6255 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6257 : 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_1045 X1).
Qed.

Remark rem_6258 : 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_1047 X2).
Qed.

Remark rem_6259 : 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_6257 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6258 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6260 : forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6259 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark epsilon_mknows_old_p_q1_p_q2_o : forall X:term, auto_knows_old X -> or_2 (auto__q1 X) (auto__q2 X). (* Justify inversion for epsilon clause. *)
Proof.
 destruct X; intro H; inversion H; intuition auto with h1mc_states_hint.
Qed.

Remark rem_6261 : forall X1 X2:term, auto__q1 X2 -> auto_knows_old X1 -> auto_knows_old (crypt X1 X2). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_mknows_old_p_q1_p_q2_o X1 H); intros.
  apply (rem_6256 X1 X2);  tauto.
  apply (rem_6260 X1 X2);  tauto.
Qed.

Remark rem_6262 : 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_1057 X1).
Qed.

Remark rem_6263 : 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_3022 X2).
Qed.

Remark rem_6264 : 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_6262 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6263 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6265 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6264 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_crypt_5;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6266 : forall X1 X2:term, auto__q2 X2 -> auto__q1 X1 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_6265 X1 X2).
Qed.

Remark rem_6267 : forall X1 X2:term, auto__q2 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_1045 X1).
Qed.

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

Remark rem_6269 : forall X1 X2:term, auto__q2 X2 -> auto__q2 X1 -> (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_6267 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6268 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6270 : forall X1 X2:term, auto__q2 X2 -> auto__q2 X1 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6269 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_crypt_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6271 : forall X1 X2:term, auto__q2 X2 -> auto_knows_old X1 -> auto_knows_old (crypt X1 X2). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_mknows_old_p_q1_p_q2_o X1 H); intros.
  apply (rem_6266 X1 X2);  tauto.
  apply (rem_6270 X1 X2);  tauto.
Qed.

Remark rem_6272 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old (crypt X1 X2). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (epsilon_mknows_old_p_q1_p_q2_o X2 H); intros.
  apply (rem_6261 X1 X2);  tauto.
  apply (rem_6271 X1 X2);  tauto.
Qed.

Remark rem_6273 : 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_6272 X1 X2).
Qed.

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

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

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

Remark rem_6277 : forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6276 X1 X2 A1 A2). clear  A1 A2. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2. tauto.
Qed.

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

Remark rem_6279 : forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X1 (cons X2 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6278 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6280 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (cons X1 (cons X2 nil)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X1 (cons X2 nil))). tauto. exact (rem_6279 X1 X2).
Qed.

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

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

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

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

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

Remark rem_6286 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (cons X1 (cons X2 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6285 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark epsilon_magent_p_q1_p_q2_o : forall X:term, auto_agent X -> or_2 (auto__q1 X) (auto__q2 X). (* Justify inversion for epsilon clause. *)
Proof.
 destruct X; intro H; inversion H; intuition auto with h1mc_states_hint.
Qed.

Remark rem_6287 : forall X1 X2:term, auto__q1 X1 -> auto_agent X2 -> auto_knows_current (cons X1 (cons X2 nil)). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X2 H); intros.
  apply (rem_6280 X1 X2);  tauto.
  apply (rem_6286 X1 X2);  tauto.
Qed.

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

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

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

Remark rem_6291 : forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6290 X1 X2 A1 A2). clear  A1 A2. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2. tauto.
Qed.

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

Remark rem_6293 : forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (cons X1 (cons X2 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6292 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

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

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

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

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

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

Remark rem_6299 : forall X1 X2:term, auto__q2 X2 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q2 (cons X2 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_6267 X1 X2);  assumption.
  cut (auto__q2 (cons X2 nil)). 2:apply (rem_6298 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6300 : forall X1 X2:term, auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (cons X1 (cons X2 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6299 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6301 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (cons X1 (cons X2 nil)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (cons X1 (cons X2 nil))). tauto. exact (rem_6300 X1 X2).
Qed.

Remark rem_6302 : forall X1 X2:term, auto__q2 X1 -> auto_agent X2 -> auto_knows_current (cons X1 (cons X2 nil)). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X2 H); intros.
  apply (rem_6294 X1 X2);  tauto.
  apply (rem_6301 X1 X2);  tauto.
Qed.

Remark rem_6303 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_knows_current (cons X1 (cons X2 nil)). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_6287 X1 X2);  tauto.
  apply (rem_6302 X1 X2);  tauto.
Qed.

Remark rem_6304 : forall _big_a _big_b:term, auto_agent _big_b -> auto_agent _big_a -> auto_knows_current (cons _big_a (cons _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 nil))). tauto. exact (rem_6303 X1 X2).
Qed.

Remark rem_6305 : forall X1 X2 X3 X4:term, auto__q2 (cons X4 (cons X2 nil)) -> auto__q2 (key prv server) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (key prv server) -> False). tauto.
  exact (rem_1034).
Qed.

Remark rem_6306 : forall X1 X2 X3 X4:term, auto__q1 (key prv server) -> auto__q3 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> False). tauto.
  exact (rem_1040).
Qed.

Remark rem_6307 : forall X1 X2 X3 X4:term, auto__q3 (cons X4 (cons X2 nil)) -> auto__q1 (key prv server) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> auto__q3 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6306 X1 X2 X3 X4).
Qed.

Remark rem_6308 : forall X1 X2 X3 X4:term, auto__q1 (key prv server) -> auto__q2 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> False). tauto.
  exact (rem_1040).
Qed.

Remark rem_6309 : forall X1 X2 X3 X4:term, auto__q2 (cons X4 (cons X2 nil)) -> auto__q1 (key prv server) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> auto__q2 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6308 X1 X2 X3 X4).
Qed.

Remark rem_6310 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_3975 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_13;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6311 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6310 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_3980 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6312 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6311 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6313 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_3971 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6312 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6314 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6313 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6315 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6314 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3974 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6316 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6315 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6317 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6316 X1 X2 X3 X4).
Qed.

Remark rem_6318 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_3992 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_current_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6319 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 (nonceb_current X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6318 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_3997 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6320 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6319 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6321 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_3988 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6320 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6322 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6321 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6323 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6322 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_3991 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6324 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6323 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6325 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6324 X1 X2 X3 X4).
Qed.

Remark rem_6326 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4009 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_current_13;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6327 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6326 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_4014 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6328 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6327 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6329 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X1 /\ auto__q1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_4005 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6328 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6330 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6329 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6331 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6330 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4008 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6332 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6331 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6333 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6332 X1 X2 X3 X4).
Qed.

Remark rem_6334 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4026 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_13;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6335 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6334 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_4031 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6336 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6335 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6337 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_4022 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6336 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6338 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6337 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6339 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6338 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4025 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6340 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6339 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6341 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6340 X1 X2 X3 X4).
Qed.

Remark rem_6342 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_120 pub X3 H);  intros.
  apply (rem_6317 X1 X2 X3 X4);  tauto.
  apply (rem_6325 X1 X2 X3 X4);  tauto.
  apply (rem_6333 X1 X2 X3 X4);  tauto.
  apply (rem_6341 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6343 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6342 X1 X2 X3 X4).
Qed.

Remark rem_6344 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6343 X1 X2 X3 X4).
Qed.

Remark rem_6345 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6342 X1 X2 X3 X4).
Qed.

Remark rem_6346 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6345 X1 X2 X3 X4).
Qed.

Remark rem_6347 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_6348 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6347 X1 X2 X3 X4).
Qed.

Remark rem_6349 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_6344 X1 X2 X3 X4);  tauto.
  apply (rem_6346 X1 X2 X3 X4);  tauto.
  apply (rem_6348 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6350 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6349 X1 X2 X3 X4).
Qed.

Remark rem_6351 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_6352 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6351 X1 X2 X3 X4).
Qed.

Remark rem_6353 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X2 nil H);  intros.
  apply (rem_6352 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6354 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6353 X1 X2 X3 X4).
Qed.

Remark rem_6355 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_6356 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6355 X1 X2 X3 X4).
Qed.

Remark rem_6357 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X2 nil H);  intros.
  apply (rem_6356 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6358 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6357 X1 X2 X3 X4).
Qed.

Remark rem_6359 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X2 nil) H);  intros.
  apply (rem_6350 X1 X2 X3 X4);  tauto.
  apply (rem_6354 X1 X2 X3 X4);  tauto.
  apply (rem_6358 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6360 : forall X1 X2 X3 X4:term, auto__q2 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6359 X1 X2 X3 X4).
Qed.

Remark rem_6361 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4062 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_40;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6362 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6361 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_4067 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6363 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6362 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6364 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_4058 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6363 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6365 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6364 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6366 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6365 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4061 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6367 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6366 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6368 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6367 X1 X2 X3 X4).
Qed.

Remark rem_6369 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4079 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_40;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6370 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6369 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_4084 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6371 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6370 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6372 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_4075 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6371 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6373 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6372 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6374 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6373 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4078 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6375 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6374 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6376 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6375 X1 X2 X3 X4).
Qed.

Remark rem_6377 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4096 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_13;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6378 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6377 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_4101 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6379 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6378 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6380 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_4092 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6379 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6381 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6380 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6382 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6381 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4095 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6383 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6382 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6384 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6383 X1 X2 X3 X4).
Qed.

Remark rem_6385 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4113 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_40;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6386 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6385 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_4118 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6387 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6386 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6388 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_4109 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6387 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6389 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6388 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6390 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6389 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4112 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6391 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6390 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6392 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6391 X1 X2 X3 X4).
Qed.

Remark rem_6393 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_4130 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_25;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6394 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6393 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_4135 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6395 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6394 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6396 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_4126 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6395 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6397 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6396 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6398 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6397 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_4129 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6399 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6398 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6400 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6399 X1 X2 X3 X4).
Qed.

Remark rem_6401 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X2 nil) H);  intros.
  apply (rem_6368 X1 X2 X3 X4);  tauto.
  apply (rem_6376 X1 X2 X3 X4);  tauto.
  apply (rem_6384 X1 X2 X3 X4);  tauto.
  apply (rem_6392 X1 X2 X3 X4);  tauto.
  apply (rem_6400 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6402 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6401 X1 X2 X3 X4).
Qed.

Remark rem_6403 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6402 X1 X2 X3 X4).
Qed.

Remark rem_6404 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_5196 X3)). tauto.
Qed.

Remark rem_6405 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6404 X1 X2 X3 X4).
Qed.

Remark rem_6406 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5203 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_26;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6407 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6406 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5208 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6408 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6407 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6409 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5199 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6408 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6410 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6409 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6411 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6410 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5202 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6412 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6411 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6413 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6412 X1 X2 X3 X4).
Qed.

Remark rem_6414 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5220 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_26;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6415 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6414 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5225 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6416 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6415 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6417 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5216 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6416 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6418 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6417 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6419 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6418 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5219 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6420 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6419 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6421 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6420 X1 X2 X3 X4).
Qed.

Remark rem_6422 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5237 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_current_13;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6423 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6422 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5242 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6424 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6423 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6425 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5233 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6424 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6426 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6425 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6427 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6426 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5236 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6428 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6427 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6429 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6428 X1 X2 X3 X4).
Qed.

Remark rem_6430 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5254 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_26;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6431 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6430 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5259 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6432 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6431 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6433 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5250 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6432 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6434 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6433 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6435 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6434 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5253 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6436 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6435 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6437 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6436 X1 X2 X3 X4).
Qed.

Remark rem_6438 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5271 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_current_15;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6439 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6438 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5276 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6440 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6439 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6441 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5267 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6440 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6442 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6441 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6443 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6442 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5270 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6444 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6443 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6445 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6444 X1 X2 X3 X4).
Qed.

Remark rem_6446 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X2 nil) H);  intros.
  apply (rem_6413 X1 X2 X3 X4);  tauto.
  apply (rem_6421 X1 X2 X3 X4);  tauto.
  apply (rem_6429 X1 X2 X3 X4);  tauto.
  apply (rem_6437 X1 X2 X3 X4);  tauto.
  apply (rem_6445 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6447 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6446 X1 X2 X3 X4).
Qed.

Remark rem_6448 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6447 X1 X2 X3 X4).
Qed.

Remark rem_6449 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_6403 X1 X2 X3 X4);  tauto.
  apply (rem_6405 X1 X2 X3 X4);  tauto.
  apply (rem_6448 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6450 : forall X1 X2 X3 X4:term, auto__q3 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6449 X1 X2 X3 X4).
Qed.

Remark rem_6451 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5293 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_13;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6452 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6451 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5298 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6453 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6452 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6454 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5289 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6453 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6455 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6454 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6456 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6455 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5292 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6457 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6456 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6458 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6457 X1 X2 X3 X4).
Qed.

Remark rem_6459 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5310 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_13;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6460 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6459 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5315 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6461 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6460 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6462 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5306 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6461 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6463 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6462 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6464 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6463 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5309 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6465 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6464 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6466 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6465 X1 X2 X3 X4).
Qed.

Remark rem_6467 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5327 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_25;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6468 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6467 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5332 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6469 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6468 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6470 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5323 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6469 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6471 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6470 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6472 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6471 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5326 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6473 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6472 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6474 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6473 X1 X2 X3 X4).
Qed.

Remark rem_6475 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X2 nil) H);  intros.
  apply (rem_6458 X1 X2 X3 X4);  tauto.
  apply (rem_6466 X1 X2 X3 X4);  tauto.
  apply (rem_6474 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6476 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6475 X1 X2 X3 X4).
Qed.

Remark rem_6477 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6476 X1 X2 X3 X4).
Qed.

Remark rem_6478 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_5196 X3)). tauto.
Qed.

Remark rem_6479 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6478 X1 X2 X3 X4).
Qed.

Remark rem_6480 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5349 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_current_13;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6481 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6480 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5354 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6482 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6481 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6483 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5345 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6482 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6484 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6483 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6485 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6484 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5348 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6486 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6485 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6487 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6486 X1 X2 X3 X4).
Qed.

Remark rem_6488 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5366 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_current_13;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6489 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q1 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6488 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5371 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6490 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6489 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6491 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X1 /\ auto__q1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5362 X1 X2 X3 X4);  assumption.
  cut (auto__q1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6490 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6492 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto__q2 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6491 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6493 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6492 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5365 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6494 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6493 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6495 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6494 X1 X2 X3 X4).
Qed.

Remark rem_6496 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto__q2 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5383 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_current_15;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6497 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> (auto__q2 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6496 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5388 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6498 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6497 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6499 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5379 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6498 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6500 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6499 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6501 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6500 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5382 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6502 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6501 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6503 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6502 X1 X2 X3 X4).
Qed.

Remark rem_6504 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X2 nil) H);  intros.
  apply (rem_6487 X1 X2 X3 X4);  tauto.
  apply (rem_6495 X1 X2 X3 X4);  tauto.
  apply (rem_6503 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6505 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6504 X1 X2 X3 X4).
Qed.

Remark rem_6506 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6505 X1 X2 X3 X4).
Qed.

Remark rem_6507 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_6477 X1 X2 X3 X4);  tauto.
  apply (rem_6479 X1 X2 X3 X4);  tauto.
  apply (rem_6506 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6508 : forall X1 X2 X3 X4:term, auto__q2 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6507 X1 X2 X3 X4).
Qed.

Remark rem_6509 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q1 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5405 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_current_12;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6510 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 (nonceb_current X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6509 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_5410 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6511 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6510 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6512 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5401 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6511 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6513 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6512 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6514 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6513 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5404 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6515 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6514 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6516 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6515 X1 X2 X3 X4).
Qed.

Remark rem_6517 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5422 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_current_15;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6518 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6517 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5427 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6519 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6518 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6520 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5418 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6519 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6521 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6520 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6522 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6521 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5421 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6523 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6522 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6524 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6523 X1 X2 X3 X4).
Qed.

Remark rem_6525 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_4351 pub X3 H);  intros.
  apply (rem_6516 X1 X2 X3 X4);  tauto.
  apply (rem_6524 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6526 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 nil -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6525 X1 X2 X3 X4).
Qed.

Remark rem_6527 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 nil -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6526 X1 X2 X3 X4).
Qed.

Remark rem_6528 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6525 X1 X2 X3 X4).
Qed.

Remark rem_6529 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6528 X1 X2 X3 X4).
Qed.

Remark rem_6530 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_6531 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6530 X1 X2 X3 X4).
Qed.

Remark rem_6532 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_6527 X1 X2 X3 X4);  tauto.
  apply (rem_6529 X1 X2 X3 X4);  tauto.
  apply (rem_6531 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6533 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6532 X1 X2 X3 X4).
Qed.

Remark rem_6534 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X2 nil) H);  intros.
  apply (rem_6533 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6535 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q3 (key pub X3) -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6534 X1 X2 X3 X4).
Qed.

Remark rem_6536 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5450 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_25;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6537 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6536 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5455 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6538 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6537 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6539 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5446 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6538 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6540 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6539 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6541 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6540 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5449 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6542 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6541 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6543 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6542 X1 X2 X3 X4).
Qed.

Remark rem_6544 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5467 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_current_12;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6545 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 (nonceb_current X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6544 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_5472 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6546 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6545 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6547 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5463 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6546 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6548 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6547 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6549 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6548 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5466 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6550 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6549 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6551 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6550 X1 X2 X3 X4).
Qed.

Remark rem_6552 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto__q2 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5484 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_nonceb_current_15;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6553 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6552 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5489 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6554 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6553 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6555 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5480 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6554 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6556 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6555 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6557 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6556 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5483 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6558 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6557 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6559 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6558 X1 X2 X3 X4).
Qed.

Remark rem_6560 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5501 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_25;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6561 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6560 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5506 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6562 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6561 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6563 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5497 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6562 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6564 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6563 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6565 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6564 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5500 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6566 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6565 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6567 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6566 X1 X2 X3 X4).
Qed.

Remark rem_6568 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_120 pub X3 H);  intros.
  apply (rem_6543 X1 X2 X3 X4);  tauto.
  apply (rem_6551 X1 X2 X3 X4);  tauto.
  apply (rem_6559 X1 X2 X3 X4);  tauto.
  apply (rem_6567 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6569 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6568 X1 X2 X3 X4).
Qed.

Remark rem_6570 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6569 X1 X2 X3 X4).
Qed.

Remark rem_6571 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6568 X1 X2 X3 X4).
Qed.

Remark rem_6572 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6571 X1 X2 X3 X4).
Qed.

Remark rem_6573 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_6574 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6573 X1 X2 X3 X4).
Qed.

Remark rem_6575 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_6570 X1 X2 X3 X4);  tauto.
  apply (rem_6572 X1 X2 X3 X4);  tauto.
  apply (rem_6574 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6576 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6575 X1 X2 X3 X4).
Qed.

Remark rem_6577 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X2 nil) H);  intros.
  apply (rem_6576 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6578 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6577 X1 X2 X3 X4).
Qed.

Remark rem_6579 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5529 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_nonceb_current_25;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6580 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6579 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5534 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6581 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6580 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6582 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X1). 2:apply (rem_5525 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6581 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6583 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6582 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6584 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6583 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5528 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6585 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6584 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6586 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6585 X1 X2 X3 X4).
Qed.

Remark rem_6587 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q1 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5546 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_nonceb_current_12;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6588 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 (nonceb_current X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6587 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_5551 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6589 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6588 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6590 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X1). 2:apply (rem_5542 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6589 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6591 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6590 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6592 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6591 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5545 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6593 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6592 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6594 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6593 X1 X2 X3 X4).
Qed.

Remark rem_6595 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5563 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q2_nonceb_current_15;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6596 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q2 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6595 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5568 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6597 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6596 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6598 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X1 /\ auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X1). 2:apply (rem_5559 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6597 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6599 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6598 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6600 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6599 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5562 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6601 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6600 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6602 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6601 X1 X2 X3 X4).
Qed.

Remark rem_6603 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X1 -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_6586 X1 X2 X3 X4);  tauto.
  apply (rem_6594 X1 X2 X3 X4);  tauto.
  apply (rem_6602 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6604 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X1 -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6603 X1 X2 X3 X4).
Qed.

Remark rem_6605 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X2 nil) H);  intros.
  apply (rem_6604 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6606 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6605 X1 X2 X3 X4).
Qed.

Remark rem_6607 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1509 (cons X1 (cons X2 nil)) (key pub X3) H);  intros.
  apply (rem_6360 X1 X2 X3 X4);  tauto.
  apply (rem_6450 X1 X2 X3 X4);  tauto.
  apply (rem_6508 X1 X2 X3 X4);  tauto.
  apply (rem_6535 X1 X2 X3 X4);  tauto.
  apply (rem_6578 X1 X2 X3 X4);  tauto.
  apply (rem_6606 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6608 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X2 -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6607 X1 X2 X3 X4).
Qed.

Remark rem_6609 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X4 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6608 X1 X2 X3 X4).
Qed.

Remark rem_6610 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 nil -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6607 X1 X2 X3 X4).
Qed.

Remark rem_6611 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X4 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 nil -> auto__q2 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6610 X1 X2 X3 X4).
Qed.

Remark rem_6612 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6351 X1 X2 X3 X4).
Qed.

Remark rem_6613 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6347 X1 X2 X3 X4).
Qed.

Remark rem_6614 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5592 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_37;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6615 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6614 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5597 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6616 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6615 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6617 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5588 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6616 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6618 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6617 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6619 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6618 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5591 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6620 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6619 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6621 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6620 X1 X2 X3 X4).
Qed.

Remark rem_6622 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5609 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_43;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6623 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6622 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_5614 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6624 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6623 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6625 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5605 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6624 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6626 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6625 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6627 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6626 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5608 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6628 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6627 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6629 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6628 X1 X2 X3 X4).
Qed.

Remark rem_6630 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5626 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_31;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6631 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6630 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5631 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6632 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6631 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6633 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5622 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6632 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6634 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6633 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6635 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6634 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5625 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6636 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6635 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6637 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6636 X1 X2 X3 X4).
Qed.

Remark rem_6638 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5643 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_37;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6639 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6638 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5648 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6640 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6639 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6641 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5639 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6640 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6642 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6641 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6643 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6642 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5642 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6644 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6643 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6645 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6644 X1 X2 X3 X4).
Qed.

Remark rem_6646 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_120 pub X3 H);  intros.
  apply (rem_6621 X1 X2 X3 X4);  tauto.
  apply (rem_6629 X1 X2 X3 X4);  tauto.
  apply (rem_6637 X1 X2 X3 X4);  tauto.
  apply (rem_6645 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6647 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 nil -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6646 X1 X2 X3 X4).
Qed.

Remark rem_6648 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 nil -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6647 X1 X2 X3 X4).
Qed.

Remark rem_6649 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_6612 X1 X2 X3 X4);  tauto.
  apply (rem_6613 X1 X2 X3 X4);  tauto.
  apply (rem_6648 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6650 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6649 X1 X2 X3 X4).
Qed.

Remark rem_6651 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6646 X1 X2 X3 X4).
Qed.

Remark rem_6652 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6651 X1 X2 X3 X4).
Qed.

Remark rem_6653 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X2 nil H);  intros.
  apply (rem_6652 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6654 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6653 X1 X2 X3 X4).
Qed.

Remark rem_6655 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5669 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_46;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6656 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6655 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5674 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6657 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6656 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6658 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5665 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6657 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6659 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6658 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6660 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6659 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5668 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6661 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6660 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6662 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6661 X1 X2 X3 X4).
Qed.

Remark rem_6663 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q1 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5686 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_current_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6664 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 (nonceb_current X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6663 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_5691 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6665 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6664 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6666 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5682 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6665 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6667 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6666 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6668 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6667 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5685 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6669 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6668 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6670 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6669 X1 X2 X3 X4).
Qed.

Remark rem_6671 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5703 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6672 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6671 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5708 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6673 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6672 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6674 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5699 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6673 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6675 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6674 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6676 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6675 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5702 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6677 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6676 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6678 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6677 X1 X2 X3 X4).
Qed.

Remark rem_6679 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5720 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_46;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6680 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6679 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5725 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6681 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6680 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6682 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5716 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6681 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6683 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6682 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6684 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6683 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5719 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6685 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6684 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6686 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6685 X1 X2 X3 X4).
Qed.

Remark rem_6687 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_120 pub X3 H);  intros.
  apply (rem_6662 X1 X2 X3 X4);  tauto.
  apply (rem_6670 X1 X2 X3 X4);  tauto.
  apply (rem_6678 X1 X2 X3 X4);  tauto.
  apply (rem_6686 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6688 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6687 X1 X2 X3 X4).
Qed.

Remark rem_6689 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6688 X1 X2 X3 X4).
Qed.

Remark rem_6690 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_689 X2 nil H);  intros.
  apply (rem_6689 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6691 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6690 X1 X2 X3 X4).
Qed.

Remark rem_6692 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X2 nil) H);  intros.
  apply (rem_6650 X1 X2 X3 X4);  tauto.
  apply (rem_6654 X1 X2 X3 X4);  tauto.
  apply (rem_6691 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6693 : forall X1 X2 X3 X4:term, auto__q2 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6692 X1 X2 X3 X4).
Qed.

Remark rem_6694 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5744 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_29;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6695 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6694 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5749 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6696 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6695 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6697 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5740 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6696 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6698 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6697 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6699 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6698 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5743 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6700 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6699 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6701 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6700 X1 X2 X3 X4).
Qed.

Remark rem_6702 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5761 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_29;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6703 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6702 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5766 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6704 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6703 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6705 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5757 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6704 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6706 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6705 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6707 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6706 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5760 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6708 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6707 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6709 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6708 X1 X2 X3 X4).
Qed.

Remark rem_6710 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5778 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_37;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6711 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6710 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5783 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6712 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6711 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6713 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5774 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6712 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6714 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6713 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6715 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6714 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5777 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6716 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6715 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6717 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6716 X1 X2 X3 X4).
Qed.

Remark rem_6718 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5795 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_29;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6719 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6718 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5800 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6720 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6719 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6721 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5791 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6720 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6722 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6721 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6723 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6722 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5794 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6724 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6723 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6725 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6724 X1 X2 X3 X4).
Qed.

Remark rem_6726 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5812 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_46;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6727 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6726 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5817 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6728 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6727 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6729 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5808 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6728 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6730 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6729 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6731 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6730 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5811 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6732 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6731 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6733 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6732 X1 X2 X3 X4).
Qed.

Remark rem_6734 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X2 nil) H);  intros.
  apply (rem_6701 X1 X2 X3 X4);  tauto.
  apply (rem_6709 X1 X2 X3 X4);  tauto.
  apply (rem_6717 X1 X2 X3 X4);  tauto.
  apply (rem_6725 X1 X2 X3 X4);  tauto.
  apply (rem_6733 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6735 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6734 X1 X2 X3 X4).
Qed.

Remark rem_6736 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6735 X1 X2 X3 X4).
Qed.

Remark rem_6737 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_5196 X3)). tauto.
Qed.

Remark rem_6738 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 X3 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6737 X1 X2 X3 X4).
Qed.

Remark rem_6739 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5834 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_35;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6740 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6739 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5839 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6741 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6740 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6742 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5830 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6741 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6743 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6742 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6744 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6743 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5833 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6745 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6744 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6746 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6745 X1 X2 X3 X4).
Qed.

Remark rem_6747 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5851 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_35;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6748 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6747 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5856 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6749 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6748 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6750 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5847 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6749 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6751 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6750 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6752 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6751 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5850 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6753 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6752 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6754 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6753 X1 X2 X3 X4).
Qed.

Remark rem_6755 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5868 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_31;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6756 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6755 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5873 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6757 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6756 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6758 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5864 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6757 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6759 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6758 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6760 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6759 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5867 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6761 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6760 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6762 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6761 X1 X2 X3 X4).
Qed.

Remark rem_6763 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5885 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_35;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6764 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6763 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5890 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6765 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6764 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6766 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_5881 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6765 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6767 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6766 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6768 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6767 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5884 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6769 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6768 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6770 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X2 nil) -> auto__q3 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6769 X1 X2 X3 X4).
Qed.

Remark rem_6771 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5902 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6772 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6771 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5907 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6773 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6772 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6774 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5898 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6773 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6775 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6774 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6776 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6775 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5901 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6777 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6776 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6778 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6777 X1 X2 X3 X4).
Qed.

Remark rem_6779 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X2 nil) H);  intros.
  apply (rem_6746 X1 X2 X3 X4);  tauto.
  apply (rem_6754 X1 X2 X3 X4);  tauto.
  apply (rem_6762 X1 X2 X3 X4);  tauto.
  apply (rem_6770 X1 X2 X3 X4);  tauto.
  apply (rem_6778 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6780 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6779 X1 X2 X3 X4).
Qed.

Remark rem_6781 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6780 X1 X2 X3 X4).
Qed.

Remark rem_6782 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_6736 X1 X2 X3 X4);  tauto.
  apply (rem_6738 X1 X2 X3 X4);  tauto.
  apply (rem_6781 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6783 : forall X1 X2 X3 X4:term, auto__q3 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q3 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6782 X1 X2 X3 X4).
Qed.

Remark rem_6784 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5924 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_37;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6785 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6784 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5929 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6786 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6785 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6787 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5920 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6786 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6788 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6787 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6789 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6788 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5923 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6790 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6789 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6791 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6790 X1 X2 X3 X4).
Qed.

Remark rem_6792 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5941 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_37;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6793 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6792 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5946 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6794 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6793 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6795 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5937 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6794 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6796 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6795 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6797 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6796 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5940 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6798 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6797 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6799 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6798 X1 X2 X3 X4).
Qed.

Remark rem_6800 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5958 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_46;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6801 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6800 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5963 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6802 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6801 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6803 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_5954 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6802 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6804 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6803 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6805 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6804 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5957 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6806 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6805 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6807 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6806 X1 X2 X3 X4).
Qed.

Remark rem_6808 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X2 nil) H);  intros.
  apply (rem_6791 X1 X2 X3 X4);  tauto.
  apply (rem_6799 X1 X2 X3 X4);  tauto.
  apply (rem_6807 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6809 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6808 X1 X2 X3 X4).
Qed.

Remark rem_6810 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6809 X1 X2 X3 X4).
Qed.

Remark rem_6811 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_5196 X3)). tauto.
Qed.

Remark rem_6812 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons X1 (cons X2 nil)) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6811 X1 X2 X3 X4).
Qed.

Remark rem_6813 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5980 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_31;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6814 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6813 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_5985 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6815 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6814 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6816 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5976 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6815 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6817 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6816 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6818 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6817 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5979 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6819 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6818 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6820 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6819 X1 X2 X3 X4).
Qed.

Remark rem_6821 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_5997 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_31;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6822 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6821 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_6002 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6823 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6822 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6824 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> (auto__q2 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_5993 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6823 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6825 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6824 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6826 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6825 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_5996 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6827 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6826 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6828 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6827 X1 X2 X3 X4).
Qed.

Remark rem_6829 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6014 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6830 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6829 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_6019 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6831 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6830 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6832 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_6010 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6831 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6833 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6832 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6834 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6833 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6013 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6835 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6834 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6836 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6835 X1 X2 X3 X4).
Qed.

Remark rem_6837 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X2 nil) H);  intros.
  apply (rem_6820 X1 X2 X3 X4);  tauto.
  apply (rem_6828 X1 X2 X3 X4);  tauto.
  apply (rem_6836 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6838 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6837 X1 X2 X3 X4).
Qed.

Remark rem_6839 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6838 X1 X2 X3 X4).
Qed.

Remark rem_6840 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_6810 X1 X2 X3 X4);  tauto.
  apply (rem_6812 X1 X2 X3 X4);  tauto.
  apply (rem_6839 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6841 : forall X1 X2 X3 X4:term, auto__q2 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q2 (cons X1 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6840 X1 X2 X3 X4).
Qed.

Remark rem_6842 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 nil -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_6843 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 nil -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6842 X1 X2 X3 X4).
Qed.

Remark rem_6844 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6530 X1 X2 X3 X4).
Qed.

Remark rem_6845 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q1 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6039 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q1_nonceb_current_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6846 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 (nonceb_current X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6845 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_6044 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6847 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6846 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6848 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_6035 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6847 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6849 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6848 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6850 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6849 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6038 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6851 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6850 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6852 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto__q3 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6851 X1 X2 X3 X4).
Qed.

Remark rem_6853 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6056 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_nonceb_current_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6854 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6853 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_6061 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6855 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6854 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6856 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_6052 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6855 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6857 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6856 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6858 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6857 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6055 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6859 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_6858 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6860 : forall X1 X2 X3 X4:term, auto__q2 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6859 X1 X2 X3 X4).
Qed.

Remark rem_6861 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_4351 pub X3 H);  intros.
  apply (rem_6852 X1 X2 X3 X4);  tauto.
  apply (rem_6860 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6862 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6861 X1 X2 X3 X4).
Qed.

Remark rem_6863 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6862 X1 X2 X3 X4).
Qed.

Remark rem_6864 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_6843 X1 X2 X3 X4);  tauto.
  apply (rem_6844 X1 X2 X3 X4);  tauto.
  apply (rem_6863 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6865 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6864 X1 X2 X3 X4).
Qed.

Remark rem_6866 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X2 nil) H);  intros.
  apply (rem_6865 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6867 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q3 (key pub X3) -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q3 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6866 X1 X2 X3 X4).
Qed.

Remark rem_6868 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto__q2 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6355 X1 X2 X3 X4).
Qed.

Remark rem_6869 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6573 X1 X2 X3 X4).
Qed.

Remark rem_6870 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6687 X1 X2 X3 X4).
Qed.

Remark rem_6871 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 nil -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6870 X1 X2 X3 X4).
Qed.

Remark rem_6872 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_6868 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__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6872 X1 X2 X3 X4).
Qed.

Remark rem_6874 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X2 nil) H);  intros.
  apply (rem_6873 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6875 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6874 X1 X2 X3 X4).
Qed.

Remark rem_6876 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6088 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_nonceb_current_46;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6877 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6876 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_6093 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6878 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6877 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6879 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X1). 2:apply (rem_6084 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6878 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6880 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6879 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6881 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6880 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6087 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6882 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6881 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6883 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto__q3 pub -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6882 X1 X2 X3 X4).
Qed.

Remark rem_6884 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q1 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6105 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q1_nonceb_current_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6885 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 (nonceb_current X2 X3 X4 X1) /\ auto__q3 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6884 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons X3 nil)). 2:apply (rem_6110 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6886 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6885 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6887 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X1). 2:apply (rem_6101 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6886 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6888 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6887 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6889 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6888 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6104 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6890 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6889 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6891 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6890 X1 X2 X3 X4).
Qed.

Remark rem_6892 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q3 (nonceb_current X2 X3 X4 X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6122 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_nonceb_current_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6893 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (nonceb_current X2 X3 X4 X1) /\ auto__q2 (cons X3 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q3 (nonceb_current X2 X3 X4 X1)). 2:apply (rem_6892 X1 X2 X3 X4);  assumption.
  cut (auto__q2 (cons X3 nil)). 2:apply (rem_6127 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6894 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6893 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6895 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q1 X1 /\ auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q1 X1). 2:apply (rem_6118 X1 X2 X3 X4);  assumption.
  cut (auto__q3 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). 2:apply (rem_6894 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6896 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6895 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans__q3_cons_5;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6897 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto__q3 (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil)))). 2:apply (rem_6896 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_6121 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6898 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_6897 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_6899 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 pub -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6898 X1 X2 X3 X4).
Qed.

Remark rem_6900 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (key pub X3) -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_6883 X1 X2 X3 X4);  tauto.
  apply (rem_6891 X1 X2 X3 X4);  tauto.
  apply (rem_6899 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6901 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (key pub X3) -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6900 X1 X2 X3 X4).
Qed.

Remark rem_6902 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X2 nil) H);  intros.
  apply (rem_6901 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6903 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X2 nil)) -> auto__q1 (key pub X3) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6902 X1 X2 X3 X4).
Qed.

Remark rem_6904 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1509 (cons X1 (cons X2 nil)) (key pub X3) H);  intros.
  apply (rem_6693 X1 X2 X3 X4);  tauto.
  apply (rem_6783 X1 X2 X3 X4);  tauto.
  apply (rem_6841 X1 X2 X3 X4);  tauto.
  apply (rem_6867 X1 X2 X3 X4);  tauto.
  apply (rem_6875 X1 X2 X3 X4);  tauto.
  apply (rem_6903 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6905 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X2 -> auto__q1 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6904 X1 X2 X3 X4).
Qed.

Remark rem_6906 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X4 -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X2 -> auto__q1 nil -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6905 X1 X2 X3 X4).
Qed.

Remark rem_6907 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 (cons X2 nil) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_6609 X1 X2 X3 X4);  tauto.
  apply (rem_6611 X1 X2 X3 X4);  tauto.
  apply (rem_6906 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6908 : forall X1 X2 X3 X4:term, auto__q1 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_689 X4 (cons X2 nil) H);  intros.
  apply (rem_6907 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6909 : forall X1 X2 X3 X4:term, auto__q1 (cons X4 (cons X2 nil)) -> auto__q3 (key prv server) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6908 X1 X2 X3 X4).
Qed.

Remark rem_6910 : forall X1 X2 X3 X4:term, auto__q1 (cons X4 (cons X2 nil)) -> auto__q2 (key prv server) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6908 X1 X2 X3 X4).
Qed.

Remark rem_6911 : forall X1 X2 X3 X4:term, auto__q1 (cons X4 (cons X2 nil)) -> auto__q1 (key prv server) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (cons X4 (cons X2 nil)) -> auto_agent X3 -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto.
  exact (rem_6908 X1 X2 X3 X4).
Qed.

Remark rem_6912 : forall X1 X2 X3 X4:term, auto_agent X3 -> auto_knows_current (crypt (cons X4 (cons X2 nil)) (key prv server)) -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1509 (cons X4 (cons X2 nil)) (key prv server) H);  intros.
  apply (rem_6305 X1 X2 X3 X4);  tauto.
  apply (rem_6307 X1 X2 X3 X4);  tauto.
  apply (rem_6309 X1 X2 X3 X4);  tauto.
  apply (rem_6909 X1 X2 X3 X4);  tauto.
  apply (rem_6910 X1 X2 X3 X4);  tauto.
  apply (rem_6911 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6913 : forall _big_a _big_b _big_kPa _big_na:term, auto_knows_current (crypt (cons _big_na (cons _big_a nil)) (key pub _big_b)) -> auto_agent _big_b -> auto_knows_current (crypt (cons _big_kPa (cons _big_a nil)) (key prv server)) -> auto_knows_current (crypt (cons _big_na (cons (nonceb_current _big_a _big_b _big_kPa _big_na) (cons _big_b nil))) _big_kPa). (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X3 X4 X1.
  cut (auto_agent X3 -> auto_knows_current (crypt (cons X4 (cons X2 nil)) (key prv server)) -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key pub X3)) -> auto_knows_current (crypt (cons X1 (cons (nonceb_current X2 X3 X4 X1) (cons X3 nil))) X4)). tauto. exact (rem_6912 X1 X2 X3 X4).
Qed.

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

Remark rem_6915 : forall X1:term, auto__q1 X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_6914 X1 A1). clear  A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  A1. tauto.
Qed.

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

Remark rem_6917 : forall X1:term, auto__q2 X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_6916 X1 A1). clear  A1. intros. apply trans_knows_current_s_2;  tauto.
 clear  A1. tauto.
Qed.

Remark epsilon_mknows_current_p_q1_p_q2_o : forall X:term, auto_knows_current X -> or_2 (auto__q1 X) (auto__q2 X). (* Justify inversion for epsilon clause. *)
Proof.
 destruct X; intro H; inversion H; intuition auto with h1mc_states_hint.
Qed.

Remark rem_6918 : forall X1:term, auto_knows_current X1 -> auto_knows_current (s X1). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1. intro H. intros.
  elim (epsilon_mknows_current_p_q1_p_q2_o X1 H); intros.
  apply (rem_6915 X1);  tauto.
  apply (rem_6917 X1);  tauto.
Qed.

Remark rem_6919 : forall _big_m:term, auto_knows_current _big_m -> auto_knows_current (s _big_m). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto_knows_current X1 -> auto_knows_current (s X1)). tauto. exact (rem_6918 X1).
Qed.

Remark rem_6920 : auto_knows_current nil. (* Deduce positive atom. *)
Proof.
   case rem_1. intros. apply trans_knows_current_nil_1;  tauto.
 tauto.
Qed.

Remark rem_6921 : auto__q3 bob -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_5189 H);  intros.
Qed.

Remark rem_6922 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_6921).
Qed.

Remark rem_6923 : forall X1 X2:term, auto__q2 alice -> auto__q3 bob -> auto__q1 X1 -> auto__q2 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 alice -> auto__q3 bob -> False). tauto. exact (rem_6922 X1 X2).
Qed.

Remark rem_6924 : forall X1 X2:term, auto__q2 X1 -> auto__q2 alice -> auto__q3 X2 -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_6921).
Qed.

Remark rem_6925 : forall X1 X2:term, auto__q2 alice -> auto__q3 bob -> auto__q3 X1 -> auto__q2 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q2 X1 -> auto__q2 alice -> auto__q3 X2 -> auto__q3 bob -> False). tauto. exact (rem_6924 X1 X2).
Qed.

Remark rem_6926 : forall X1 X2:term, auto__q1 alice -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_6921).
Qed.

Remark rem_6927 : forall X1 X2:term, auto__q1 alice -> auto__q3 bob -> auto__q3 X1 -> auto__q3 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 alice -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 bob -> False). tauto. exact (rem_6926 X1 X2).
Qed.

Remark rem_6928 : auto__q2 alice -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_518 H);  intros.
Qed.

Remark rem_6929 : forall X1 X2:term, auto__q1 X1 -> auto__q1 bob -> auto__q2 alice -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q2 alice -> False). tauto.
  exact (rem_6928).
Qed.

Remark rem_6930 : forall X1 X2:term, auto__q2 alice -> auto__q1 bob -> auto__q3 X1 -> auto__q1 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 X1 -> auto__q1 bob -> auto__q2 alice -> auto__q3 X2 -> False). tauto. exact (rem_6929 X1 X2).
Qed.

Remark rem_6931 : forall X1 X2:term, auto__q1 X1 -> auto__q1 alice -> auto__q2 X2 -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_6921).
Qed.

Remark rem_6932 : forall X1 X2:term, auto__q1 alice -> auto__q3 bob -> auto__q2 X1 -> auto__q1 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 X1 -> auto__q1 alice -> auto__q2 X2 -> auto__q3 bob -> False). tauto. exact (rem_6931 X1 X2).
Qed.

Remark rem_6933 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_6921).
Qed.

Remark rem_6934 : forall X1 X2:term, auto__q1 alice -> auto__q3 bob -> auto__q1 X1 -> auto__q1 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 alice -> auto__q3 bob -> False). tauto. exact (rem_6933 X1 X2).
Qed.

Remark rem_6935 : forall X1 X2:term, auto__q2 alice -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_6921).
Qed.

Remark rem_6936 : forall X1 X2:term, auto__q2 alice -> auto__q3 bob -> auto__q3 X1 -> auto__q3 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q2 alice -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 bob -> False). tauto. exact (rem_6935 X1 X2).
Qed.

Remark rem_6937 : auto__q3 alice -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_5192 H);  intros.
Qed.

Remark rem_6938 : forall X1 X2:term, auto__q1 X1 -> auto__q1 bob -> auto__q3 X2 -> auto__q3 alice -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_6939 : forall X1 X2:term, auto__q3 alice -> auto__q1 bob -> auto__q1 X1 -> auto__q3 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 bob -> auto__q3 X2 -> auto__q3 alice -> False). tauto. exact (rem_6938 X1 X2).
Qed.

Remark rem_6940 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_6941 : forall X1 X2:term, auto__q3 alice -> auto__q3 bob -> auto__q3 X1 -> auto__q2 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q2 X1 -> auto__q3 X2 -> auto__q3 alice -> auto__q3 bob -> False). tauto. exact (rem_6940 X1 X2).
Qed.

Remark rem_6942 : forall X1 X2:term, auto__q1 X1 -> auto__q1 bob -> auto__q2 X2 -> auto__q3 alice -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_6943 : forall X1 X2:term, auto__q3 alice -> auto__q1 bob -> auto__q1 X1 -> auto__q2 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 bob -> auto__q2 X2 -> auto__q3 alice -> False). tauto. exact (rem_6942 X1 X2).
Qed.

Remark rem_6944 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 bob -> auto__q3 alice -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_6945 : forall X1 X2:term, auto__q3 alice -> auto__q1 bob -> auto__q1 X1 -> auto__q1 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 bob -> auto__q3 alice -> False). tauto. exact (rem_6944 X1 X2).
Qed.

Remark rem_6946 : forall X1 X2:term, auto__q1 X1 -> auto__q1 alice -> auto__q3 X2 -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_6921).
Qed.

Remark rem_6947 : forall X1 X2:term, auto__q1 alice -> auto__q3 bob -> auto__q3 X1 -> auto__q1 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 X1 -> auto__q1 alice -> auto__q3 X2 -> auto__q3 bob -> False). tauto. exact (rem_6946 X1 X2).
Qed.

Remark rem_6948 : forall X1 X2:term, auto__q1 alice -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_6921).
Qed.

Remark rem_6949 : forall X1 X2:term, auto__q1 alice -> auto__q3 bob -> auto__q2 X1 -> auto__q2 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 alice -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 bob -> False). tauto. exact (rem_6948 X1 X2).
Qed.

Remark rem_6950 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_6951 : forall X1 X2:term, auto__q3 alice -> auto__q3 bob -> auto__q1 X1 -> auto__q3 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X2 -> auto__q3 alice -> auto__q3 bob -> False). tauto. exact (rem_6950 X1 X2).
Qed.

Remark rem_6952 : forall X1 X2:term, auto__q1 bob -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 alice -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_6953 : forall X1 X2:term, auto__q3 alice -> auto__q1 bob -> auto__q2 X1 -> auto__q2 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 bob -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 alice -> False). tauto. exact (rem_6952 X1 X2).
Qed.

Remark rem_6954 : forall X1 X2:term, auto__q2 alice -> auto__q3 bob -> auto__q2 X1 -> auto__q3 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 alice -> auto__q3 X2 -> auto__q3 bob -> False). tauto. exact (rem_6924 X1 X2).
Qed.

Remark rem_6955 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_6956 : forall X1 X2:term, auto__q3 alice -> auto__q3 bob -> auto__q1 X1 -> auto__q1 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 alice -> auto__q3 bob -> False). tauto. exact (rem_6955 X1 X2).
Qed.

Remark rem_6957 : forall X1 X2:term, auto__q3 alice -> auto__q1 bob -> auto__q2 X1 -> auto__q1 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 X1 -> auto__q1 bob -> auto__q2 X2 -> auto__q3 alice -> False). tauto. exact (rem_6942 X1 X2).
Qed.

Remark rem_6958 : forall X1 X2:term, auto__q1 bob -> auto__q2 alice -> auto__q3 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q2 alice -> False). tauto.
  exact (rem_6928).
Qed.

Remark rem_6959 : forall X1 X2:term, auto__q2 alice -> auto__q1 bob -> auto__q3 X1 -> auto__q3 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 bob -> auto__q2 alice -> auto__q3 X1 -> auto__q3 X2 -> False). tauto. exact (rem_6958 X1 X2).
Qed.

Remark rem_6960 : forall X1 X2:term, auto__q1 X1 -> auto__q2 alice -> auto__q3 X2 -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_6921).
Qed.

Remark rem_6961 : forall X1 X2:term, auto__q2 alice -> auto__q3 bob -> auto__q3 X1 -> auto__q1 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 X1 -> auto__q2 alice -> auto__q3 X2 -> auto__q3 bob -> False). tauto. exact (rem_6960 X1 X2).
Qed.

Remark rem_6962 : forall X1 X2:term, auto__q1 bob -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 alice -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_6963 : forall X1 X2:term, auto__q3 alice -> auto__q1 bob -> auto__q3 X1 -> auto__q3 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 bob -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 alice -> False). tauto. exact (rem_6962 X1 X2).
Qed.

Remark rem_6964 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_6965 : forall X1 X2:term, auto__q3 alice -> auto__q3 bob -> auto__q2 X1 -> auto__q2 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q3 alice -> auto__q3 bob -> False). tauto. exact (rem_6964 X1 X2).
Qed.

Remark rem_6966 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_6921).
Qed.

Remark rem_6967 : forall X1 X2:term, auto__q2 alice -> auto__q3 bob -> auto__q1 X1 -> auto__q1 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 alice -> auto__q3 bob -> False). tauto. exact (rem_6966 X1 X2).
Qed.

Remark rem_6968 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_6969 : forall X1 X2:term, auto__q3 alice -> auto__q3 bob -> auto__q1 X1 -> auto__q2 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 alice -> auto__q3 bob -> False). tauto. exact (rem_6968 X1 X2).
Qed.

Remark rem_6970 : forall X1 X2:term, auto__q1 X1 -> auto__q1 bob -> auto__q2 X2 -> auto__q2 alice -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q2 alice -> False). tauto.
  exact (rem_6928).
Qed.

Remark rem_6971 : forall X1 X2:term, auto__q2 alice -> auto__q1 bob -> auto__q1 X1 -> auto__q2 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 bob -> auto__q2 X2 -> auto__q2 alice -> False). tauto. exact (rem_6970 X1 X2).
Qed.

Remark rem_6972 : forall X1 X2:term, auto__q3 alice -> auto__q3 bob -> auto__q2 X1 -> auto__q3 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X2 -> auto__q3 alice -> auto__q3 bob -> False). tauto. exact (rem_6940 X1 X2).
Qed.

Remark rem_6973 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_6974 : forall X1 X2:term, auto__q3 alice -> auto__q3 bob -> auto__q3 X1 -> auto__q3 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q3 X1 -> auto__q3 X2 -> auto__q3 alice -> auto__q3 bob -> False). tauto. exact (rem_6973 X1 X2).
Qed.

Remark rem_6975 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 bob -> auto__q2 alice -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q2 alice -> False). tauto.
  exact (rem_6928).
Qed.

Remark rem_6976 : forall X1 X2:term, auto__q2 alice -> auto__q1 bob -> auto__q1 X1 -> auto__q1 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 bob -> auto__q2 alice -> False). tauto. exact (rem_6975 X1 X2).
Qed.

Remark rem_6977 : forall X1 X2:term, auto__q2 alice -> auto__q3 bob -> auto__q1 X1 -> auto__q3 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 alice -> auto__q3 X2 -> auto__q3 bob -> False). tauto. exact (rem_6960 X1 X2).
Qed.

Remark rem_6978 : forall X1 X2 X3 X4:term, auto_knows_current (nonceb_current X1 X2 X3 X4) -> or_29
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
.
Proof.
  intros. inversion H.
  intros. apply or_29_intro_1; tauto.
  intros. apply or_29_intro_2; tauto.
  intros. apply or_29_intro_3; tauto.
  intros. apply or_29_intro_4; tauto.
  intros. apply or_29_intro_5; tauto.
  intros. apply or_29_intro_6; tauto.
  intros. apply or_29_intro_7; tauto.
  intros. apply or_29_intro_8; tauto.
  intros. apply or_29_intro_9; tauto.
  intros. apply or_29_intro_10; tauto.
  intros. apply or_29_intro_11; tauto.
  intros. apply or_29_intro_12; tauto.
  intros. apply or_29_intro_13; tauto.
  intros. apply or_29_intro_14; tauto.
  intros. apply or_29_intro_15; tauto.
  intros. apply or_29_intro_16; tauto.
  intros. apply or_29_intro_17; tauto.
  intros. apply or_29_intro_18; tauto.
  intros. apply or_29_intro_19; tauto.
  intros. apply or_29_intro_20; tauto.
  intros. apply or_29_intro_21; tauto.
  intros. apply or_29_intro_22; tauto.
  intros. apply or_29_intro_23; tauto.
  intros. apply or_29_intro_24; tauto.
  intros. apply or_29_intro_25; tauto.
  intros. apply or_29_intro_26; tauto.
  intros. apply or_29_intro_27; tauto.
  intros. apply or_29_intro_28; tauto.
  intros. apply or_29_intro_29; tauto.
Qed.

Remark rem_6979 : forall X1 X2:term, auto_knows_current (nonceb_current alice bob X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_6978 alice bob X1 X2 H);  intros.
  apply (rem_6923 X1 X2);  tauto.
  apply (rem_6925 X1 X2);  tauto.
  apply (rem_6927 X1 X2);  tauto.
  apply (rem_6930 X1 X2);  tauto.
  apply (rem_6932 X1 X2);  tauto.
  apply (rem_6934 X1 X2);  tauto.
  apply (rem_6936 X1 X2);  tauto.
  apply (rem_6939 X1 X2);  tauto.
  apply (rem_6941 X1 X2);  tauto.
  apply (rem_6943 X1 X2);  tauto.
  apply (rem_6945 X1 X2);  tauto.
  apply (rem_6947 X1 X2);  tauto.
  apply (rem_6949 X1 X2);  tauto.
  apply (rem_6951 X1 X2);  tauto.
  apply (rem_6953 X1 X2);  tauto.
  apply (rem_6954 X1 X2);  tauto.
  apply (rem_6956 X1 X2);  tauto.
  apply (rem_6957 X1 X2);  tauto.
  apply (rem_6959 X1 X2);  tauto.
  apply (rem_6961 X1 X2);  tauto.
  apply (rem_6963 X1 X2);  tauto.
  apply (rem_6965 X1 X2);  tauto.
  apply (rem_6967 X1 X2);  tauto.
  apply (rem_6969 X1 X2);  tauto.
  apply (rem_6971 X1 X2);  tauto.
  apply (rem_6972 X1 X2);  tauto.
  apply (rem_6974 X1 X2);  tauto.
  apply (rem_6976 X1 X2);  tauto.
  apply (rem_6977 X1 X2);  tauto.
Qed.

Remark rem_6980 : forall X1 X2:term, auto_knows_current (nonceb_current alice bob X1 X2) -> auto___query__intruder_knows_bob_msg. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current (nonceb_current alice bob X1 X2) -> False). tauto.
  exact (rem_6979 X1 X2).
Qed.

Remark rem_6981 : forall _big_kPa _big_na:term, auto_knows_current (nonceb_current alice bob _big_kPa _big_na) -> auto___query__intruder_knows_bob_msg. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current (nonceb_current alice bob X1 X2) -> auto___query__intruder_knows_bob_msg). tauto. exact (rem_6980 X1 X2).
Qed.

Remark rem_6982 : (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_6983 : (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_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_6984 : (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_6985 : (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_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_6986 : (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_6987 : (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_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_6988 : (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_6983 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6985 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_6987 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_6989 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6988 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. 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__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_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_6991 : (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_6992 : (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_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_6993 : (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_6994 : (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_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_6995 : (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_6990 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6992 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_6994 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_6996 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6995 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_2;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_6997 : (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_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_6998 : (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_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_6999 : (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_7000 : (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_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7001 : (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_6997 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6998 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7000 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7002 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7001 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_3;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7003 : (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_7004 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7005 : (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_7006 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7007 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7008 : (forall X:term, auto_agent 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_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__q2 X2). 2:apply (rem_7006 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7007 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7009 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7008 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_4;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7010 : (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_7011 : (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_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7012 : (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_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7013 : (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_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7014 : (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_7011 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7012 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7013 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7015 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7014 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_5;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7016 : (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_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7017 : (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_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7018 : (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_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7019 : (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_7016 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7017 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7018 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7020 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7019 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_6;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7021 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7022 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7023 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7024 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7021 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7022 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7023 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7025 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7024 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_7;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7026 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7027 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7028 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7029 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7026 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7027 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7028 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7030 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7029 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_8;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7031 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7032 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7033 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7034 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7031 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7032 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7033 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7035 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7034 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_9;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7036 : (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_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7037 : (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_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7038 : (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_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7039 : (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_7036 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7037 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7038 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7040 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7039 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_10;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7041 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7042 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7043 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7044 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7041 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7042 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7043 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7045 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7044 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_11;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7046 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7047 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7048 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7049 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7046 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7047 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7048 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7050 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7049 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_12;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7051 : (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_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7052 : (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_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7053 : (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_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7054 : (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_7051 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7052 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7053 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7055 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7054 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_13;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7056 : (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_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7057 : (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_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7058 : (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_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7059 : (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_7056 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7057 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7058 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7060 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7059 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_14;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7061 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7062 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7063 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7064 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7061 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7062 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7063 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7065 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7064 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_15;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7066 : (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_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7067 : (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_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7068 : (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_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7069 : (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_7066 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7067 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7068 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7070 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7069 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_16;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7071 : (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_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7072 : (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_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7073 : (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_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7074 : (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_7071 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7072 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7073 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7075 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7074 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_17;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7076 : (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_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7077 : (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_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7078 : (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_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7079 : (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_7076 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7077 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7078 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7080 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7079 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_18;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7081 : (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_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7082 : (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_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7083 : (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_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7084 : (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_7081 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7082 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7083 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7085 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7084 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_19;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7086 : (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_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7087 : (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_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7088 : (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_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7089 : (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_7086 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7087 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7088 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7090 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7089 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_20;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7091 : (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_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7092 : (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_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7093 : (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_6986 epsilon_magent_pknows_current X3).
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__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_7091 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7092 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7093 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7095 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7094 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_21;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
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__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_7003 epsilon_magent_pknows_current X1).
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__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_6984 epsilon_magent_pknows_current X2).
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__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_6993 epsilon_magent_pknows_current X3).
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__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_7096 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7097 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7098 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7100 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7099 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_22;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7101 : (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_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7102 : (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_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7103 : (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_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7104 : (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_7101 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7102 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7103 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7105 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7104 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_23;  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__q3 X1 -> auto__q3 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_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7107 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7108 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7109 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7106 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7107 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7108 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7110 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7109 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_24;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7111 : (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_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7112 : (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_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7113 : (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_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7114 : (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_7111 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7112 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7113 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7115 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7114 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_25;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7116 : (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_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7117 : (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_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7118 : (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_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7119 : (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_7116 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7117 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7118 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7120 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7119 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_26;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7121 : (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_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7122 : (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_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7123 : (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_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7124 : (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_7121 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7122 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7123 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7125 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7124 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_27;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7126 : forall X1 X2 X3:term, auto_agent (noncea_old X1 X2 X3) -> or_27
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_27_intro_1; tauto.
  intros. apply or_27_intro_2; tauto.
  intros. apply or_27_intro_3; tauto.
  intros. apply or_27_intro_4; tauto.
  intros. apply or_27_intro_5; tauto.
  intros. apply or_27_intro_6; tauto.
  intros. apply or_27_intro_7; tauto.
  intros. apply or_27_intro_8; tauto.
  intros. apply or_27_intro_9; tauto.
  intros. apply or_27_intro_10; tauto.
  intros. apply or_27_intro_11; tauto.
  intros. apply or_27_intro_12; tauto.
  intros. apply or_27_intro_13; tauto.
  intros. apply or_27_intro_14; tauto.
  intros. apply or_27_intro_15; tauto.
  intros. apply or_27_intro_16; tauto.
  intros. apply or_27_intro_17; tauto.
  intros. apply or_27_intro_18; tauto.
  intros. apply or_27_intro_19; tauto.
  intros. apply or_27_intro_20; tauto.
  intros. apply or_27_intro_21; tauto.
  intros. apply or_27_intro_22; tauto.
  intros. apply or_27_intro_23; tauto.
  intros. apply or_27_intro_24; tauto.
  intros. apply or_27_intro_25; tauto.
  intros. apply or_27_intro_26; tauto.
  intros. apply or_27_intro_27; tauto.
Qed.

Remark rem_7127 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_agent (noncea_old X1 X2 X3) -> auto_knows_current (noncea_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_7126 X1 X2 X3 H);  intros.
  apply (rem_6989 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_6996 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7002 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7009 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7015 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7020 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7025 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7030 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7035 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7040 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7045 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7050 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7055 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7060 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7065 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7070 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7075 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7080 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7085 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7090 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7095 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7100 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7105 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7110 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7115 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7120 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7125 epsilon_magent_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_7128 : (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_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7129 : (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_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7130 : (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_7128 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7129 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7131 : (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_7130 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_crypt_1;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7132 : (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_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7133 : (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_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7134 : (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_7132 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7133 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7135 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 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_7134 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_7136 : (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_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7137 : (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_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7138 : (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_7136 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7137 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7139 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7138 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7140 : (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_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7141 : (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_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7142 : (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_7140 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7141 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7143 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7142 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_7144 : (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_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7145 : (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_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7146 : (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_7144 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7145 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7147 : (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_7146 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7148 : (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_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7149 : (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_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7150 : (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_7148 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7149 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7151 : (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_7150 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_7152 : (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_4156 X1 X2 H);  intros.
  apply (rem_7131 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7135 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7139 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7143 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7147 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7151 epsilon_magent_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7153 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7014 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_1;  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__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7019 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_2;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7155 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7029 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_3;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7156 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7034 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_4;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7157 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7049 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_5;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7158 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7054 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_6;  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__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7059 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_7;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7160 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7064 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_8;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7161 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7069 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_9;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7162 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7074 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_10;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7163 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7089 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_11;  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__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7109 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_12;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7165 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7124 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_13;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7166 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto_knows_current (noncea_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_7153 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7154 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7155 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7156 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7157 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7158 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7159 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7160 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7161 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7162 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7163 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7164 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7165 epsilon_magent_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_7167 : (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_6982 epsilon_magent_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_7168 : (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_7167 epsilon_magent_pknows_current X1 A1). clear  epsilon_magent_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_magent_pknows_current A1. tauto.
Defined.

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

Remark rem_7170 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1:term, auto__q2 X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1. intros A1.
  case (rem_7169 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_7171 : (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_4329 X1 H);  intros.
  apply (rem_7168 epsilon_magent_pknows_current X1);  tauto.
  apply (rem_7170 epsilon_magent_pknows_current X1);  tauto.
Defined.

Remark rem_7172 : (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_7173 : (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_7172 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_7174 : auto_agent nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7175 : (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_7174 H);  intros.
  apply (rem_7173 epsilon_magent_pknows_current);  tauto.
Defined.

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

Remark rem_7178 : (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_7177 H);  intros.
  apply (rem_7176 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_7179 : (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_7172 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_7180 : auto_agent bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7181 : (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_7180 H);  intros.
  apply (rem_7179 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_7182 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7130 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7183 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7138 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_cons_2;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7184 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7146 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_cons_3;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7185 : (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_7150 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_7186 : (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_4333 X1 X2 H);  intros.
  apply (rem_7182 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7183 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7184 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7185 epsilon_magent_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7187 : (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_7172 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_7188 : auto_agent prv -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7189 : (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_7188 H);  intros.
  apply (rem_7187 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_7190 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_knows_current intruder. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current.  case (rem_7172 epsilon_magent_pknows_current). clear  epsilon_magent_pknows_current. intros. apply trans_knows_current_intruder_1;  tauto.
 clear  epsilon_magent_pknows_current. tauto.
Defined.

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

Remark rem_7192 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_agent intruder -> auto_knows_current intruder. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intro H. intros.
  elim (rem_7191 H);  intros.
  apply (rem_7190 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_7193 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 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_7130 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_7194 : (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_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7195 : (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_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7196 : (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_7194 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7195 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7197 : (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_7196 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_7198 : (forall X:term, auto_agent 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_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7134 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_7199 : (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_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7200 : (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_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7201 : (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_7199 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7200 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7202 : (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_7201 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_7203 : (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_7142 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_key_5;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7204 : (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_7146 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_7205 : (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_7150 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_7206 : (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_4345 X1 X2 H);  intros.
  apply (rem_7193 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7197 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7198 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7202 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7203 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7204 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7205 epsilon_magent_pknows_current X1 X2);  tauto.
Defined.

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

Remark rem_7209 : (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_7208 H);  intros.
  apply (rem_7207 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_7210 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_knows_current sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current.  case (rem_7172 epsilon_magent_pknows_current). clear  epsilon_magent_pknows_current. intros. apply trans_knows_current_sym_1;  tauto.
 clear  epsilon_magent_pknows_current. tauto.
Defined.

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

Remark rem_7212 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_agent sym -> auto_knows_current sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intro H. intros.
  elim (rem_7211 H);  intros.
  apply (rem_7210 epsilon_magent_pknows_current);  tauto.
Defined.

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

Remark rem_7215 : (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_7214 H);  intros.
  apply (rem_7213 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_7216 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7217 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7218 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

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

Remark rem_7220 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7221 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7216 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7217 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7218 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7220 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7222 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7221 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_1;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7223 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7224 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7225 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7226 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7227 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7223 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7224 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7225 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7226 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7228 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7227 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_2;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7229 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7230 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7231 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7232 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X4:term, auto__q3 X4 -> auto__q3 X4. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7233 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7234 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7229 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7230 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7231 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7233 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7235 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7234 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_3;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7236 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7237 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7238 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

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

Remark rem_7240 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7241 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7236 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7237 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7238 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7240 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7242 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7241 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_4;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7243 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7244 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7245 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7246 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7247 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7243 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7244 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7245 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7246 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7248 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7247 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_5;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7249 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7250 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7251 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7252 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7253 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7249 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7250 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7251 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7252 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7254 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7253 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_6;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7255 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7256 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7257 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7258 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7259 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7255 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7256 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7257 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7258 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7260 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7259 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_7;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7261 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7262 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7263 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7264 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7265 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7261 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7262 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7263 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7264 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7266 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7265 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_8;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7267 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7268 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7269 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7270 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7271 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7267 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7268 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7269 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7270 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7272 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7271 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_9;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7273 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7274 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7275 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7276 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7277 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7273 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7274 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7275 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7276 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7278 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7277 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_10;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7279 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7280 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7281 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7282 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7283 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7279 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7280 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7281 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7282 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7284 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7283 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_11;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7285 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7286 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7287 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7288 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7289 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7285 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7286 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7287 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7288 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7290 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7289 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_12;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7291 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7292 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7293 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7294 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7295 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7291 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7292 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7293 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7294 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7296 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7295 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_13;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7297 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7298 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7299 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7300 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7301 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7297 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7298 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7299 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7300 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7302 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7301 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_14;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7303 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7304 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7305 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7306 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7307 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7303 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7304 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7305 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7306 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7308 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7307 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_15;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7309 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7310 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7311 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7312 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7313 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7309 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7310 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7311 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7312 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7314 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7313 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_16;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7315 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7316 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7317 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7318 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7319 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7315 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7316 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7317 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7318 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7320 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7319 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_17;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7321 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7322 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7323 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7324 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7325 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7321 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7322 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7323 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7324 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7326 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7325 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_18;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7327 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7328 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7329 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7330 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7331 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7327 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7328 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7329 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7330 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7332 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7331 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_19;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7333 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7334 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7335 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7336 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7337 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7333 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7334 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7335 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7336 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7338 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7337 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_20;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7339 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7340 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7341 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7342 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7343 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7339 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7340 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7341 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7342 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7344 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7343 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_21;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7345 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7346 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7347 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7348 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7349 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7345 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7346 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7347 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7348 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7350 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7349 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_22;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7351 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7352 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7353 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7354 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7355 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7351 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7352 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7353 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7354 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7356 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7355 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_23;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7357 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7358 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7359 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7360 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7361 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7357 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7358 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7359 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7360 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7362 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7361 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_24;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7363 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7364 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7365 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7366 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7367 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7363 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7364 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7365 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7366 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7368 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7367 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_25;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7369 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7370 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7371 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7372 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7373 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7369 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7370 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7371 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7372 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7374 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7373 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_26;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7375 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7376 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7377 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7378 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7379 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7375 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7376 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7377 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7378 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7380 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7379 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_27;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7381 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7382 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7383 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7384 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7385 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7381 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7382 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7383 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7384 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7386 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7385 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_28;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7387 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7388 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7389 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7390 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7391 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7387 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7388 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7389 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7390 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7392 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7391 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_29;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7393 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_7222 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7228 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7235 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7242 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7248 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7254 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7260 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7266 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7272 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7278 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7284 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7290 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7296 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7302 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7308 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7314 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7320 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7326 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7332 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7338 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7344 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7350 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7356 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7362 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7368 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7374 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7380 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7386 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7392 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
Defined.

Remark rem_7394 : (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_7172 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_7395 : auto_agent pub -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7396 : (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_7395 H);  intros.
  apply (rem_7394 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_7397 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7221 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7398 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7399 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7400 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7401 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7402 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7398 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7399 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7400 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7401 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7403 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7402 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_2;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7404 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7405 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7406 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7407 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7408 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7404 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7405 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7406 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7407 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7409 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7408 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_3;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7410 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7227 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_4;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7411 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7412 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7413 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7414 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7415 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7411 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7412 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7413 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7414 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7416 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7415 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_5;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7417 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7234 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_6;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7418 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7419 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7420 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7421 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7422 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7418 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7419 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7420 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7421 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7423 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7422 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_7;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7424 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7425 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7426 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7427 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7428 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7424 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7425 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7426 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7427 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7429 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7428 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_8;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7430 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7431 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7432 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7433 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7434 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7430 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7431 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7432 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7433 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7435 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7434 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_9;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7436 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7437 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7438 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7439 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7440 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7436 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7437 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7438 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7439 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7441 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7440 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_10;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7442 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7443 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7444 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7445 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7446 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7442 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7443 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7444 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7445 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7447 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7446 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_11;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7448 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7241 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_12;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7449 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7450 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7451 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7452 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7453 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7449 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7450 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7451 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7452 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7454 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7453 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_13;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7455 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7456 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7457 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7458 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7459 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7455 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7456 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7457 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7458 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7460 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7459 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_14;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7461 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7462 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7463 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7464 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7465 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7461 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7462 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7463 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7464 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7466 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7465 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_15;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7467 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7468 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7469 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7470 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7471 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7467 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7468 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7469 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7470 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7472 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7471 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_16;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7473 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7247 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_17;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7474 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7253 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_18;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7475 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7476 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7477 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7478 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7479 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7475 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7476 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7477 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7478 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7480 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7479 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_19;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7481 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7482 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7483 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7484 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7485 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7481 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7482 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7483 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7484 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7486 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7485 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_20;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7487 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7259 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_21;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7488 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7489 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7490 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7491 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7492 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7488 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7489 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7490 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7491 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7493 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7492 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_22;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7494 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7265 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_23;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7495 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7496 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7497 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7498 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7499 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7495 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7496 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7497 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7498 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7500 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7499 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_24;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7501 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7502 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7503 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7504 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7505 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7501 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7502 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7503 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7504 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7506 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7505 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_25;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7507 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7508 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7509 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7510 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7511 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7507 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7508 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7509 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7510 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7512 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7511 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_26;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7513 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7271 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_27;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7514 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7515 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7516 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7517 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7518 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7514 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7515 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7516 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7517 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7519 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7518 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_28;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7520 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7277 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_29;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7521 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7522 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7523 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7524 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7525 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7521 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7522 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7523 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7524 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7526 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7525 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_30;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7527 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7528 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7529 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7530 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7531 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7527 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7528 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7529 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7530 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7532 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7531 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_31;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7533 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7534 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7535 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7536 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7537 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7533 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7534 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7535 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7536 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7538 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7537 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_32;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7539 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7540 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7541 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7542 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7543 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7539 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7540 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7541 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7542 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7544 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7543 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_33;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7545 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7283 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_34;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7546 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7289 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_35;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7547 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7548 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7549 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7550 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7551 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7547 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7548 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7549 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7550 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7552 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7551 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_36;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7553 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7554 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7555 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7556 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7557 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7553 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7554 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7555 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7556 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7558 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7557 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_37;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7559 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7560 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7561 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7562 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7563 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7559 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7560 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7561 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7562 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7564 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7563 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_38;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7565 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7566 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7567 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7568 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7569 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7565 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7566 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7567 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7568 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7570 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7569 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_39;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7571 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7295 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_40;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7572 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7573 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7574 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7575 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7576 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7572 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7573 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7574 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7575 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7577 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7576 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_41;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7578 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7579 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7580 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7581 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7582 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7578 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7579 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7580 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7581 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7583 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7582 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_42;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7584 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7585 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7586 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7587 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7588 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7584 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7585 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7586 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7587 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7589 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7588 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_43;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7590 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7591 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7592 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7593 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7594 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7590 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7591 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7592 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7593 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7595 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7594 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_44;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7596 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7597 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7598 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7599 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7600 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7596 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7597 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7598 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7599 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7601 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7600 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_45;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7602 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7603 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7604 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7605 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7606 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7602 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7603 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7604 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7605 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7607 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7606 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_46;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7608 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7301 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_47;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7609 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7307 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_48;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7610 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7611 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7612 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7613 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7614 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7610 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7611 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7612 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7613 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7615 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7614 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_49;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7616 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7313 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_50;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7617 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7618 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7619 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7620 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7621 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7617 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7618 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7619 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7620 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7622 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7621 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_51;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7623 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7319 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_52;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7624 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7625 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7626 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7627 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7628 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7624 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7625 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7626 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7627 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7629 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7628 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_53;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7630 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7631 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7632 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7633 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7634 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7630 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7631 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7632 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7633 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7635 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7634 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_54;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7636 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7325 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_55;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7637 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7331 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_56;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7638 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7639 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7640 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7641 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7642 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7638 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7639 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7640 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7641 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7643 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7642 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_57;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7644 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7337 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_58;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7645 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7343 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_59;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7646 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7647 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7648 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7649 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7650 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7646 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7647 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7648 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7649 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7651 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7650 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_60;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7652 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7349 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_61;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7653 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7355 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_62;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7654 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7655 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7656 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7657 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7658 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7654 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7655 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7656 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7657 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7659 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7658 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_63;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7660 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7361 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_64;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7661 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7662 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7663 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7664 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7665 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7661 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7662 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7663 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7664 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7666 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7665 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_65;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7667 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7668 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6984 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7669 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7670 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7671 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7667 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7668 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7669 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7670 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7672 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7671 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_66;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7673 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7674 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7675 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7676 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7677 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7673 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7674 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7675 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7676 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7678 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7677 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_67;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7679 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7680 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7681 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7682 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7683 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7679 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7680 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7681 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7682 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7684 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7683 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_68;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7685 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7367 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_69;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7686 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7687 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7688 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7689 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7690 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7686 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7687 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7688 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7689 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7691 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7690 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_70;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7692 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7693 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7694 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7695 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7696 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7692 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7693 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7694 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7695 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7697 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7696 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_71;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7698 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7373 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_72;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7699 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7700 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7701 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6993 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7702 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_7219 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7703 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7699 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7700 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7701 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_7702 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7704 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7703 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_73;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7705 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7379 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_74;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7706 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7385 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_75;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7707 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7708 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7709 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7710 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7711 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7707 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7708 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7709 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7710 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7712 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7711 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_76;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7713 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7010 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7714 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7715 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7716 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7717 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_7713 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7714 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7715 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7716 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7718 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7717 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_77;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7719 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7720 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7721 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7722 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7723 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7719 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7720 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7721 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7722 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7724 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7723 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_78;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7725 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6982 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7726 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7005 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7727 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6999 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7728 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_7232 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7729 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_7725 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7726 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7727 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_7728 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7730 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7729 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_79;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7731 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7003 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7732 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6991 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7733 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6986 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7734 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_7239 epsilon_magent_pknows_current X4).
Defined.

Remark rem_7735 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_7731 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7732 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7733 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_7734 epsilon_magent_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_7736 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7735 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_80;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_7737 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_7391 epsilon_magent_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_81;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3 A4. tauto.
Defined.

Inductive or_81(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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81:Prop) : Prop :=
    or_81_intro_1 : H1 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_2 : H2 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_3 : H3 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_4 : H4 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_5 : H5 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_6 : H6 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_7 : H7 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_8 : H8 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_9 : H9 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_10 : H10 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_11 : H11 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_12 : H12 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_13 : H13 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_14 : H14 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_15 : H15 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_16 : H16 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_17 : H17 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_18 : H18 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_19 : H19 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_20 : H20 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_21 : H21 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_22 : H22 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_23 : H23 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_24 : H24 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_25 : H25 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_26 : H26 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_27 : H27 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_28 : H28 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_29 : H29 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_30 : H30 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_31 : H31 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_32 : H32 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_33 : H33 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_34 : H34 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_35 : H35 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_36 : H36 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_37 : H37 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_38 : H38 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_39 : H39 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_40 : H40 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_41 : H41 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_42 : H42 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_43 : H43 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_44 : H44 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_45 : H45 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_46 : H46 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_47 : H47 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_48 : H48 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_49 : H49 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_50 : H50 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_51 : H51 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_52 : H52 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_53 : H53 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_54 : H54 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_55 : H55 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_56 : H56 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_57 : H57 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_58 : H58 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_59 : H59 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_60 : H60 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_61 : H61 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_62 : H62 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_63 : H63 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_64 : H64 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_65 : H65 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_66 : H66 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_67 : H67 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_68 : H68 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_69 : H69 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_70 : H70 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_71 : H71 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_72 : H72 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_73 : H73 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_74 : H74 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_75 : H75 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_76 : H76 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_77 : H77 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_78 : H78 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_79 : H79 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_80 : H80 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
  | or_81_intro_81 : H81 -> (or_81 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 H65 H66 H67 H68 H69 H70 H71 H72 H73 H74 H75 H76 H77 H78 H79 H80 H81)
.

Remark rem_7738 : forall X1 X2 X3 X4:term, auto_agent (nonceb_old X1 X2 X3 X4) -> or_81
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
.
Proof.
  intros. inversion H.
  intros. apply or_81_intro_1; tauto.
  intros. apply or_81_intro_2; tauto.
  intros. apply or_81_intro_3; tauto.
  intros. apply or_81_intro_4; tauto.
  intros. apply or_81_intro_5; tauto.
  intros. apply or_81_intro_6; tauto.
  intros. apply or_81_intro_7; tauto.
  intros. apply or_81_intro_8; tauto.
  intros. apply or_81_intro_9; tauto.
  intros. apply or_81_intro_10; tauto.
  intros. apply or_81_intro_11; tauto.
  intros. apply or_81_intro_12; tauto.
  intros. apply or_81_intro_13; tauto.
  intros. apply or_81_intro_14; tauto.
  intros. apply or_81_intro_15; tauto.
  intros. apply or_81_intro_16; tauto.
  intros. apply or_81_intro_17; tauto.
  intros. apply or_81_intro_18; tauto.
  intros. apply or_81_intro_19; tauto.
  intros. apply or_81_intro_20; tauto.
  intros. apply or_81_intro_21; tauto.
  intros. apply or_81_intro_22; tauto.
  intros. apply or_81_intro_23; tauto.
  intros. apply or_81_intro_24; tauto.
  intros. apply or_81_intro_25; tauto.
  intros. apply or_81_intro_26; tauto.
  intros. apply or_81_intro_27; tauto.
  intros. apply or_81_intro_28; tauto.
  intros. apply or_81_intro_29; tauto.
  intros. apply or_81_intro_30; tauto.
  intros. apply or_81_intro_31; tauto.
  intros. apply or_81_intro_32; tauto.
  intros. apply or_81_intro_33; tauto.
  intros. apply or_81_intro_34; tauto.
  intros. apply or_81_intro_35; tauto.
  intros. apply or_81_intro_36; tauto.
  intros. apply or_81_intro_37; tauto.
  intros. apply or_81_intro_38; tauto.
  intros. apply or_81_intro_39; tauto.
  intros. apply or_81_intro_40; tauto.
  intros. apply or_81_intro_41; tauto.
  intros. apply or_81_intro_42; tauto.
  intros. apply or_81_intro_43; tauto.
  intros. apply or_81_intro_44; tauto.
  intros. apply or_81_intro_45; tauto.
  intros. apply or_81_intro_46; tauto.
  intros. apply or_81_intro_47; tauto.
  intros. apply or_81_intro_48; tauto.
  intros. apply or_81_intro_49; tauto.
  intros. apply or_81_intro_50; tauto.
  intros. apply or_81_intro_51; tauto.
  intros. apply or_81_intro_52; tauto.
  intros. apply or_81_intro_53; tauto.
  intros. apply or_81_intro_54; tauto.
  intros. apply or_81_intro_55; tauto.
  intros. apply or_81_intro_56; tauto.
  intros. apply or_81_intro_57; tauto.
  intros. apply or_81_intro_58; tauto.
  intros. apply or_81_intro_59; tauto.
  intros. apply or_81_intro_60; tauto.
  intros. apply or_81_intro_61; tauto.
  intros. apply or_81_intro_62; tauto.
  intros. apply or_81_intro_63; tauto.
  intros. apply or_81_intro_64; tauto.
  intros. apply or_81_intro_65; tauto.
  intros. apply or_81_intro_66; tauto.
  intros. apply or_81_intro_67; tauto.
  intros. apply or_81_intro_68; tauto.
  intros. apply or_81_intro_69; tauto.
  intros. apply or_81_intro_70; tauto.
  intros. apply or_81_intro_71; tauto.
  intros. apply or_81_intro_72; tauto.
  intros. apply or_81_intro_73; tauto.
  intros. apply or_81_intro_74; tauto.
  intros. apply or_81_intro_75; tauto.
  intros. apply or_81_intro_76; tauto.
  intros. apply or_81_intro_77; tauto.
  intros. apply or_81_intro_78; tauto.
  intros. apply or_81_intro_79; tauto.
  intros. apply or_81_intro_80; tauto.
  intros. apply or_81_intro_81; tauto.
Qed.

Remark rem_7739 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_old X1 X2 X3 X4) -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_7738 X1 X2 X3 X4 H);  intros.
  apply (rem_7397 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7403 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7409 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7410 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7416 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7417 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7423 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7429 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7435 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7441 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7447 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7448 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7454 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7460 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7466 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7472 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7473 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7474 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7480 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7486 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7487 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7493 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7494 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7500 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7506 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7512 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7513 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7519 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7520 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7526 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7532 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7538 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7544 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7545 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7546 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7552 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7558 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7564 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7570 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7571 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7577 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7583 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7589 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7595 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7601 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7607 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7608 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7609 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7615 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7616 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7622 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7623 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7629 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7635 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7636 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7637 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7643 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7644 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7645 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7651 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7652 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7653 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7659 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7660 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7666 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7672 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7678 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7684 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7685 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7691 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7697 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7698 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7704 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7705 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7706 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7712 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7718 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7724 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7730 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7736 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_7737 epsilon_magent_pknows_current X1 X2 X3 X4);  tauto.
Defined.

Remark rem_7740 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6988 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_1;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7741 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6995 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_2;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7742 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7001 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_3;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7743 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7008 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_4;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7744 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7014 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_5;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7745 : (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_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7019 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_6;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7746 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7024 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_7;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7747 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7029 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_8;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7748 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7034 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_9;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7749 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7039 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_10;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7750 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7044 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_11;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7751 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7049 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_12;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7752 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7054 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_13;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7753 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7059 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_14;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7754 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7064 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_15;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7755 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7069 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_16;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7756 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7074 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_17;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7757 : (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_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7079 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_18;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7758 : (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_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7084 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_19;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7759 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7089 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_20;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7760 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7094 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_21;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7761 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7099 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_22;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7762 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7104 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_23;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7763 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7109 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_24;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7764 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7114 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_25;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7765 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7119 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_26;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7766 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7124 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_27;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7767 : forall X1 X2 X3:term, auto_agent (session_old X1 X2 X3) -> or_27
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_27_intro_1; tauto.
  intros. apply or_27_intro_2; tauto.
  intros. apply or_27_intro_3; tauto.
  intros. apply or_27_intro_4; tauto.
  intros. apply or_27_intro_5; tauto.
  intros. apply or_27_intro_6; tauto.
  intros. apply or_27_intro_7; tauto.
  intros. apply or_27_intro_8; tauto.
  intros. apply or_27_intro_9; tauto.
  intros. apply or_27_intro_10; tauto.
  intros. apply or_27_intro_11; tauto.
  intros. apply or_27_intro_12; tauto.
  intros. apply or_27_intro_13; tauto.
  intros. apply or_27_intro_14; tauto.
  intros. apply or_27_intro_15; tauto.
  intros. apply or_27_intro_16; tauto.
  intros. apply or_27_intro_17; tauto.
  intros. apply or_27_intro_18; tauto.
  intros. apply or_27_intro_19; tauto.
  intros. apply or_27_intro_20; tauto.
  intros. apply or_27_intro_21; tauto.
  intros. apply or_27_intro_22; tauto.
  intros. apply or_27_intro_23; tauto.
  intros. apply or_27_intro_24; tauto.
  intros. apply or_27_intro_25; tauto.
  intros. apply or_27_intro_26; tauto.
  intros. apply or_27_intro_27; tauto.
Qed.

Remark rem_7768 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_agent (session_old X1 X2 X3) -> auto_knows_current (session_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_7767 X1 X2 X3 H);  intros.
  apply (rem_7740 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7741 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7742 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7743 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7744 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7745 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7746 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7747 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7748 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7749 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7750 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7751 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7752 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7753 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7754 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7755 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7756 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7757 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7758 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7759 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7760 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7761 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7762 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7763 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7764 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7765 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7766 epsilon_magent_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_7769 : forall X1:term, auto_agent X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_magent_pknows_current 1.
  intro X. case X.
  exact (rem_7215 epsilon_magent_pknows_current ).
  exact (rem_7181 epsilon_magent_pknows_current ).
  intros X1 X2;  exact (rem_7186 epsilon_magent_pknows_current X1 X2).
  intros X1 X2;  exact (rem_7152 epsilon_magent_pknows_current X1 X2).
  exact (rem_7178 epsilon_magent_pknows_current ).
  intros X1 X2;  exact (rem_7206 epsilon_magent_pknows_current X1 X2).
  exact (rem_7175 epsilon_magent_pknows_current ).
  intros X1 X2 X3;  exact (rem_7166 epsilon_magent_pknows_current X1 X2 X3).
  intros X1 X2 X3;  exact (rem_7127 epsilon_magent_pknows_current X1 X2 X3).
  intros X1 X2 X3 X4;  exact (rem_7393 epsilon_magent_pknows_current X1 X2 X3 X4).
  intros X1 X2 X3 X4;  exact (rem_7739 epsilon_magent_pknows_current X1 X2 X3 X4).
  exact (rem_7189 epsilon_magent_pknows_current ).
  exact (rem_7396 epsilon_magent_pknows_current ).
  intros X1;  exact (rem_7171 epsilon_magent_pknows_current X1).
  exact (rem_7209 epsilon_magent_pknows_current ).
  intros X1 X2 X3;  exact (rem_7768 epsilon_magent_pknows_current X1 X2 X3).
  exact (rem_7212 epsilon_magent_pknows_current ).
Qed.

Remark rem_7770 : forall X:term, auto_agent X -> auto_knows_current X. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto_agent X1 -> auto_knows_current X1). tauto. exact (rem_7769 X1).
Qed.

Remark rem_7771 : forall _big_a _big_b _big_kb:term, auto_has_pub_key _big_kb _big_b -> auto_knows_old (cons _big_a (cons _big_b nil)) -> auto_knows_old (crypt (cons _big_kb (cons _big_b nil)) (key prv server)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X3 X2 X1.
  cut (auto_has_pub_key X1 X2 -> auto_knows_old (cons X3 (cons X2 nil)) -> auto_knows_old (crypt (cons X1 (cons X2 nil)) (key prv server))). tauto. exact (rem_6166 X1 X2 X3).
Qed.

Remark rem_7772 : 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_6937).
Qed.

Remark rem_7773 : 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_7772 X1).
Qed.

Remark rem_7774 : forall X1:term, auto__q1 X1 -> auto__q2 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_6921).
Qed.

Remark rem_7775 : forall X1:term, auto__q2 alice -> auto__q3 bob -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q2 alice -> auto__q3 bob -> False). tauto. exact (rem_7774 X1).
Qed.

Remark rem_7776 : forall X1:term, auto__q2 X1 -> auto__q2 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_6921).
Qed.

Remark rem_7777 : forall X1:term, auto__q2 alice -> auto__q3 bob -> auto__q2 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q2 alice -> auto__q3 bob -> False). tauto. exact (rem_7776 X1).
Qed.

Remark rem_7778 : forall X1:term, auto__q1 bob -> auto__q3 X1 -> auto__q3 alice -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_7779 : forall X1:term, auto__q3 alice -> auto__q1 bob -> auto__q3 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 bob -> auto__q3 X1 -> auto__q3 alice -> False). tauto. exact (rem_7778 X1).
Qed.

Remark rem_7780 : forall X1:term, auto__q1 X1 -> auto__q1 bob -> auto__q3 alice -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_7781 : forall X1:term, auto__q3 alice -> auto__q1 bob -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q1 bob -> auto__q3 alice -> False). tauto. exact (rem_7780 X1).
Qed.

Remark rem_7782 : 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_6937).
Qed.

Remark rem_7783 : 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_7782 X1).
Qed.

Remark rem_7784 : forall X1:term, auto__q3 X1 -> auto__q3 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_7785 : 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_7784 X1).
Qed.

Remark rem_7786 : forall X1:term, auto__q2 X1 -> auto__q3 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_7787 : 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_7786 X1).
Qed.

Remark rem_7788 : auto__q2 bob -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_516 H);  intros.
Qed.

Remark rem_7789 : forall X1:term, auto__q1 X1 -> auto__q1 alice -> auto__q2 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q2 bob -> False). tauto.
  exact (rem_7788).
Qed.

Remark rem_7790 : forall X1:term, auto__q1 alice -> auto__q2 bob -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q1 alice -> auto__q2 bob -> False). tauto. exact (rem_7789 X1).
Qed.

Remark rem_7791 : forall X1:term, auto__q2 X1 -> auto__q2 alice -> auto__q2 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q2 alice -> False). tauto.
  exact (rem_6928).
Qed.

Remark rem_7792 : forall X1:term, auto__q2 alice -> auto__q2 bob -> auto__q2 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q2 alice -> auto__q2 bob -> False). tauto. exact (rem_7791 X1).
Qed.

Remark rem_7793 : 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_6928).
Qed.

Remark rem_7794 : 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_7793 X1).
Qed.

Remark rem_7795 : forall X1:term, auto__q1 X1 -> auto__q3 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_6937).
Qed.

Remark rem_7796 : 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_7795 X1).
Qed.

Remark rem_7797 : forall X1:term, auto__q1 alice -> auto__q2 X1 -> auto__q2 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q2 bob -> False). tauto.
  exact (rem_7788).
Qed.

Remark rem_7798 : forall X1:term, auto__q1 alice -> auto__q2 bob -> auto__q2 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 alice -> auto__q2 X1 -> auto__q2 bob -> False). tauto. exact (rem_7797 X1).
Qed.

Remark rem_7799 : forall X1 X2 X3:term, auto_knows_current (noncea_current X1 X2 X3) -> or_13
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
.
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_7800 : forall X1:term, auto_knows_current (noncea_current alice bob X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_7799 alice bob X1 H);  intros.
  apply (rem_7773 X1);  tauto.
  apply (rem_7775 X1);  tauto.
  apply (rem_7777 X1);  tauto.
  apply (rem_7779 X1);  tauto.
  apply (rem_7781 X1);  tauto.
  apply (rem_7783 X1);  tauto.
  apply (rem_7785 X1);  tauto.
  apply (rem_7787 X1);  tauto.
  apply (rem_7790 X1);  tauto.
  apply (rem_7792 X1);  tauto.
  apply (rem_7794 X1);  tauto.
  apply (rem_7796 X1);  tauto.
  apply (rem_7798 X1);  tauto.
Qed.

Remark rem_7801 : forall X1:term, auto_knows_current (noncea_current alice bob X1) -> auto___query__intruder_knows_alice_msg. (* Split. *)
Proof.
  intros X1.
  cut (auto_knows_current (noncea_current alice bob X1) -> False). tauto.
  exact (rem_7800 X1).
Qed.

Remark rem_7802 : forall _big_kPb:term, auto_knows_current (noncea_current alice bob _big_kPb) -> auto___query__intruder_knows_alice_msg. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto_knows_current (noncea_current alice bob X1) -> auto___query__intruder_knows_alice_msg). tauto. exact (rem_7801 X1).
Qed.

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

Remark rem_7804 : 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_1020 X1 X2).
Qed.

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

Remark rem_7806 : 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_1022 X1 X2 H);  intros.
  apply (rem_7803 X1 X2);  tauto.
  apply (rem_7804 X1 X2);  tauto.
  apply (rem_1018 X1 X2);  tauto.
  apply (rem_7805 X1 X2);  tauto.
Qed.

Remark rem_7807 : 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_7806 X1 X2).
Qed.

Remark rem_7808 : forall _big_a _big_b _big_kb:term, auto_has_pub_key _big_kb _big_b -> auto_knows_current (cons _big_a (cons _big_b nil)) -> auto_knows_current (crypt (cons _big_kb (cons _big_b nil)) (key prv server)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X3 X2 X1.
  cut (auto_has_pub_key X1 X2 -> auto_knows_current (cons X3 (cons X2 nil)) -> auto_knows_current (crypt (cons X1 (cons X2 nil)) (key prv server))). tauto. exact (rem_6251 X1 X2 X3).
Qed.

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

Remark rem_7810 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

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

Remark rem_7812 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

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

Remark rem_7814 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7815 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7810 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7812 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7814 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7816 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7815 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7817 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

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

Remark rem_7819 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

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

Remark rem_7821 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7822 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7817 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7819 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7821 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7823 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7822 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7824 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7825 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

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

Remark rem_7827 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7828 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7824 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7825 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7827 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7829 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7828 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_3;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

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

Remark rem_7831 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

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

Remark rem_7833 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7834 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7835 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7831 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7833 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7834 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7836 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7835 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_4;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

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

Remark rem_7838 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7839 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7840 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7841 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7838 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7839 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7840 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7842 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7841 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_5;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7843 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7844 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7845 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7846 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7843 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7844 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7845 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7847 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7846 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_6;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7848 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7849 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7850 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7851 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7848 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7849 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7850 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7852 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7851 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_7;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7853 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7854 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7855 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7856 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7853 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7854 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7855 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7857 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7856 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_8;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7858 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7859 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7860 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7861 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7858 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7859 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7860 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7862 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7861 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_9;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7863 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7864 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7865 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7866 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7863 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7864 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7865 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7867 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7866 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_10;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7868 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7869 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7870 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7871 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7868 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7869 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7870 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7872 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7871 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_11;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7873 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7874 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7875 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7876 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7873 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7874 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7875 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7877 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7876 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_12;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7878 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7879 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7880 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7881 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7878 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7879 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7880 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7882 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7881 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_13;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7883 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7884 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7885 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7886 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7883 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7884 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7885 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7887 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7886 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_14;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7888 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7889 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7890 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7891 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7888 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7889 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7890 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7892 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7891 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_15;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7893 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7894 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7895 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7896 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7893 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7894 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7895 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7897 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7896 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_16;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7898 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7899 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7900 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7901 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7898 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7899 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7900 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7902 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7901 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_17;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7903 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7904 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7905 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7906 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7903 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7904 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7905 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7907 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7906 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_18;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7908 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7909 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7910 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7911 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7908 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7909 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7910 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7912 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7911 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_19;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7913 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7914 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7915 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7916 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7913 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7914 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7915 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7917 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7916 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_20;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7918 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7919 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7920 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7921 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7918 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7919 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7920 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7922 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7921 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_21;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7923 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7924 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7925 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7926 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7923 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7924 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7925 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7927 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7926 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_22;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7928 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7929 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7930 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7931 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7928 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7929 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7930 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7932 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7931 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_23;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7933 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7934 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7935 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7936 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7933 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7934 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7935 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7937 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7936 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_24;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7938 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7939 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7940 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7941 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7938 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7939 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7940 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7942 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7941 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_25;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7943 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7944 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7945 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7946 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7943 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7944 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7945 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7947 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7946 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_26;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7948 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7949 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7950 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_7951 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7948 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7949 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7950 epsilon_mknows_old_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7952 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7951 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_old_27;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7953 : forall X1 X2 X3:term, auto_knows_old (noncea_old X1 X2 X3) -> or_27
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_27_intro_1; tauto.
  intros. apply or_27_intro_2; tauto.
  intros. apply or_27_intro_3; tauto.
  intros. apply or_27_intro_4; tauto.
  intros. apply or_27_intro_5; tauto.
  intros. apply or_27_intro_6; tauto.
  intros. apply or_27_intro_7; tauto.
  intros. apply or_27_intro_8; tauto.
  intros. apply or_27_intro_9; tauto.
  intros. apply or_27_intro_10; tauto.
  intros. apply or_27_intro_11; tauto.
  intros. apply or_27_intro_12; tauto.
  intros. apply or_27_intro_13; tauto.
  intros. apply or_27_intro_14; tauto.
  intros. apply or_27_intro_15; tauto.
  intros. apply or_27_intro_16; tauto.
  intros. apply or_27_intro_17; tauto.
  intros. apply or_27_intro_18; tauto.
  intros. apply or_27_intro_19; tauto.
  intros. apply or_27_intro_20; tauto.
  intros. apply or_27_intro_21; tauto.
  intros. apply or_27_intro_22; tauto.
  intros. apply or_27_intro_23; tauto.
  intros. apply or_27_intro_24; tauto.
  intros. apply or_27_intro_25; tauto.
  intros. apply or_27_intro_26; tauto.
  intros. apply or_27_intro_27; tauto.
Qed.

Remark rem_7954 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old (noncea_old X1 X2 X3) -> auto_knows_current (noncea_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_7953 X1 X2 X3 H);  intros.
  apply (rem_7816 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7823 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7829 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7836 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7842 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7847 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7852 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7857 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7862 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7867 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7872 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7877 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7882 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7887 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7892 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7897 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7902 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7907 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7912 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7917 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7922 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7927 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7932 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7937 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7942 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7947 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7952 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_7955 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7956 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7957 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_7955 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7956 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7958 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7957 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_7959 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7960 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7961 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_7959 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7960 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7962 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7961 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_7963 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7964 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7965 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_7963 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7964 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7966 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7965 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_7967 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7968 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7969 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_7967 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7968 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7970 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7969 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_7971 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7972 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7973 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_7971 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7972 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7974 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7973 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_7975 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_7976 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_7977 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_7975 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7976 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7978 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7977 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_7979 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_5580 X1 X2 H);  intros.
  apply (rem_7958 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_7962 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_7966 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_7970 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_7974 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_7978 epsilon_mknows_old_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7980 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7841 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7981 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7846 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7982 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7856 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_3;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7983 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7861 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_4;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7984 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7876 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_5;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7985 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7881 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_6;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7986 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7886 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_7;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7987 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7891 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_8;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7988 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7896 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_9;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7989 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7901 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_10;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7990 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7916 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_11;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7991 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7936 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_12;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7992 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7951 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_noncea_current_13;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7993 : forall X1 X2 X3:term, auto_knows_old (noncea_current X1 X2 X3) -> or_13
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
.
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_7994 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old (noncea_current X1 X2 X3) -> auto_knows_current (noncea_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_7993 X1 X2 X3 H);  intros.
  apply (rem_7980 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7981 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7982 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7983 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7984 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7985 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7986 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7987 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7988 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7989 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7990 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7991 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_7992 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
Defined.

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

Remark rem_7996 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto__q1 X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1. intros A1.
  case (rem_7995 epsilon_mknows_old_pknows_current X1 A1). clear  epsilon_mknows_old_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1. tauto.
Defined.

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

Remark rem_7998 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto__q2 X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1. intros A1.
  case (rem_7997 epsilon_mknows_old_pknows_current X1 A1). clear  epsilon_mknows_old_pknows_current A1. intros. apply trans_knows_current_s_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1. tauto.
Defined.

Remark rem_7999 : forall X1:term, auto_knows_old (s X1) -> or_2
    (auto__q1 X1)    (auto__q2 X1).
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_8000 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1. intro H. intros.
  elim (rem_7999 X1 H);  intros.
  apply (rem_7996 epsilon_mknows_old_pknows_current X1);  tauto.
  apply (rem_7998 epsilon_mknows_old_pknows_current X1);  tauto.
Defined.

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

Remark rem_8002 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  case (rem_8001 epsilon_mknows_old_pknows_current). clear  epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_mknows_old_pknows_current. tauto.
Defined.

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

Remark rem_8004 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_old nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_8003 H);  intros.
  apply (rem_8002 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_8005 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  case (rem_8001 epsilon_mknows_old_pknows_current). clear  epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_mknows_old_pknows_current. tauto.
Defined.

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

Remark rem_8007 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_old i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_8006 H);  intros.
  apply (rem_8005 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_8008 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  case (rem_8001 epsilon_mknows_old_pknows_current). clear  epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_mknows_old_pknows_current. tauto.
Defined.

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

Remark rem_8010 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_old bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_8009 H);  intros.
  apply (rem_8008 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_8011 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7957 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_8012 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7965 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_cons_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_8013 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7973 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_cons_3;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_8014 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7977 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_cons_4;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_8015 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_2974 X1 X2 H);  intros.
  apply (rem_8011 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_8012 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_8013 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_8014 epsilon_mknows_old_pknows_current X1 X2);  tauto.
Defined.

Remark rem_8016 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current prv. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  case (rem_8001 epsilon_mknows_old_pknows_current). clear  epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_prv_1;  tauto.
 clear  epsilon_mknows_old_pknows_current. tauto.
Defined.

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

Remark rem_8018 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_old prv -> auto_knows_current prv. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_8017 H);  intros.
  apply (rem_8016 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_8019 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current intruder. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  case (rem_8001 epsilon_mknows_old_pknows_current). clear  epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_intruder_1;  tauto.
 clear  epsilon_mknows_old_pknows_current. tauto.
Defined.

Remark rem_8020 : auto_knows_old intruder -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8021 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_old intruder -> auto_knows_current intruder. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_8020 H);  intros.
  apply (rem_8019 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_8022 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7957 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_8023 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8024 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8025 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_8023 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8024 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8026 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_8025 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_8027 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7961 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_key_3;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_8028 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8029 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8030 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_8028 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8029 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8031 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_8030 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_key_4;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_8032 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7969 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_key_5;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_8033 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7973 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_key_6;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_8034 : (forall X:term, auto_knows_old 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_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7977 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_key_7;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_8035 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_6185 X1 X2 H);  intros.
  apply (rem_8022 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_8026 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_8027 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_8031 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_8032 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_8033 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_8034 epsilon_mknows_old_pknows_current X1 X2);  tauto.
Defined.

Remark rem_8036 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  case (rem_8001 epsilon_mknows_old_pknows_current). clear  epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_mknows_old_pknows_current. tauto.
Defined.

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

Remark rem_8038 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_old server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_8037 H);  intros.
  apply (rem_8036 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_8039 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  case (rem_8001 epsilon_mknows_old_pknows_current). clear  epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_sym_1;  tauto.
 clear  epsilon_mknows_old_pknows_current. tauto.
Defined.

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

Remark rem_8041 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_old sym -> auto_knows_current sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_8040 H);  intros.
  apply (rem_8039 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_8042 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  case (rem_8001 epsilon_mknows_old_pknows_current). clear  epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_mknows_old_pknows_current. tauto.
Defined.

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

Remark rem_8044 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_old alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_8043 H);  intros.
  apply (rem_8042 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_8045 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8046 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8047 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

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

Remark rem_8049 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8050 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8045 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8046 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8047 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8049 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8051 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8050 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8052 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8053 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8054 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8055 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8056 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8052 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8053 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8054 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8055 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8057 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8056 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8058 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8059 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8060 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8061 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X4:term, auto__q3 X4 -> auto__q3 X4. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8062 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8063 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8058 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8059 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8060 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8062 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8064 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8063 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_3;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8065 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8066 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8067 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

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

Remark rem_8069 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8070 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8065 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8066 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8067 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8069 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8071 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8070 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_4;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8072 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8073 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8074 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8075 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8076 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8072 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8073 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8074 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8075 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8077 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8076 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_5;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8078 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8079 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8080 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8081 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8082 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8078 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8079 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8080 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8081 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8083 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8082 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_6;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8084 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8085 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8086 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8087 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8088 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8084 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8085 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8086 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8087 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8089 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8088 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_7;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8090 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8091 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8092 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8093 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8094 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8090 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8091 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8092 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8093 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8095 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8094 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_8;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8096 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8097 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8098 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8099 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8100 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8096 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8097 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8098 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8099 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8101 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8100 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_9;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8102 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8103 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8104 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8105 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8106 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8102 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8103 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8104 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8105 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8107 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8106 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_10;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8108 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8109 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8110 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8111 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8112 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8108 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8109 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8110 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8111 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8113 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8112 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_11;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8114 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8115 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8116 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8117 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8118 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8114 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8115 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8116 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8117 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8119 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8118 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_12;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8120 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8121 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8122 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8123 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8124 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8120 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8121 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8122 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8123 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8125 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8124 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_13;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8126 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8127 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8128 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8129 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8130 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8126 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8127 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8128 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8129 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8131 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8130 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_14;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8132 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8133 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8134 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8135 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8136 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8132 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8133 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8134 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8135 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8137 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8136 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_15;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8138 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8139 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8140 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8141 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8142 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8138 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8139 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8140 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8141 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8143 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8142 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_16;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8144 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8145 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8146 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8147 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8148 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8144 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8145 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8146 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8147 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8149 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8148 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_17;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8150 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8151 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8152 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8153 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8154 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8150 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8151 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8152 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8153 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8155 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8154 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_18;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8156 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8157 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8158 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8159 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8160 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8156 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8157 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8158 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8159 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8161 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8160 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_19;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8162 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8163 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8164 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8165 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8166 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8162 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8163 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8164 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8165 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8167 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8166 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_20;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8168 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8169 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8170 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8171 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8172 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8168 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8169 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8170 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8171 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8173 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8172 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_21;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8174 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8175 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8176 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8177 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8178 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8174 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8175 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8176 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8177 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8179 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8178 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_22;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8180 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8181 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8182 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8183 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8184 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8180 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8181 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8182 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8183 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8185 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8184 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_23;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8186 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8187 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8188 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8189 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8190 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8186 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8187 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8188 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8189 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8191 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8190 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_24;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8192 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8193 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8194 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8195 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8196 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8192 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8193 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8194 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8195 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8197 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8196 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_25;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8198 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8199 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8200 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8201 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8202 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8198 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8199 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8200 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8201 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8203 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8202 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_26;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8204 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8205 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8206 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8207 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8208 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8204 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8205 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8206 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8207 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8209 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8208 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_27;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8210 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8211 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8212 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8213 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8214 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8210 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8211 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8212 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8213 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8215 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8214 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_28;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8216 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8217 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8218 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8219 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8220 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8216 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8217 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8218 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8219 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8221 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8220 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_current_29;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8222 : forall X1 X2 X3 X4:term, auto_knows_old (nonceb_current X1 X2 X3 X4) -> or_29
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
.
Proof.
  intros. inversion H.
  intros. apply or_29_intro_1; tauto.
  intros. apply or_29_intro_2; tauto.
  intros. apply or_29_intro_3; tauto.
  intros. apply or_29_intro_4; tauto.
  intros. apply or_29_intro_5; tauto.
  intros. apply or_29_intro_6; tauto.
  intros. apply or_29_intro_7; tauto.
  intros. apply or_29_intro_8; tauto.
  intros. apply or_29_intro_9; tauto.
  intros. apply or_29_intro_10; tauto.
  intros. apply or_29_intro_11; tauto.
  intros. apply or_29_intro_12; tauto.
  intros. apply or_29_intro_13; tauto.
  intros. apply or_29_intro_14; tauto.
  intros. apply or_29_intro_15; tauto.
  intros. apply or_29_intro_16; tauto.
  intros. apply or_29_intro_17; tauto.
  intros. apply or_29_intro_18; tauto.
  intros. apply or_29_intro_19; tauto.
  intros. apply or_29_intro_20; tauto.
  intros. apply or_29_intro_21; tauto.
  intros. apply or_29_intro_22; tauto.
  intros. apply or_29_intro_23; tauto.
  intros. apply or_29_intro_24; tauto.
  intros. apply or_29_intro_25; tauto.
  intros. apply or_29_intro_26; tauto.
  intros. apply or_29_intro_27; tauto.
  intros. apply or_29_intro_28; tauto.
  intros. apply or_29_intro_29; tauto.
Qed.

Remark rem_8223 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto_knows_old (nonceb_current X1 X2 X3 X4) -> auto_knows_current (nonceb_current X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_8222 X1 X2 X3 X4 H);  intros.
  apply (rem_8051 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8057 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8064 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8071 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8077 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8083 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8089 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8095 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8101 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8107 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8113 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8119 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8125 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8131 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8137 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8143 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8149 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8155 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8161 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8167 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8173 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8179 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8185 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8191 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8197 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8203 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8209 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8215 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8221 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
Defined.

Remark rem_8224 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current pub. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  case (rem_8001 epsilon_mknows_old_pknows_current). clear  epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_pub_1;  tauto.
 clear  epsilon_mknows_old_pknows_current. tauto.
Defined.

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

Remark rem_8226 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_old pub -> auto_knows_current pub. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_8225 H);  intros.
  apply (rem_8224 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_8227 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8050 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8228 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8229 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8230 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8231 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8232 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8228 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8229 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8230 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8231 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8233 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8232 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8234 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8235 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8236 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8237 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8238 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8234 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8235 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8236 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8237 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8239 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8238 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_3;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8240 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8056 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_4;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8241 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8242 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8243 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8244 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8245 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8241 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8242 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8243 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8244 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8246 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8245 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_5;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8247 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8063 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_6;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8248 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8249 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8250 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8251 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8252 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8248 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8249 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8250 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8251 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8253 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8252 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_7;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8254 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8255 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8256 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8257 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8258 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8254 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8255 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8256 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8257 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8259 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8258 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_8;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8260 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8261 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8262 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8263 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8264 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8260 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8261 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8262 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8263 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8265 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8264 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_9;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8266 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8267 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8268 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8269 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8270 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8266 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8267 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8268 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8269 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8271 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8270 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_10;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8272 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8273 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8274 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8275 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8276 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8272 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8273 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8274 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8275 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8277 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8276 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_11;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8278 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8070 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_12;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8279 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8280 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8281 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8282 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8283 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8279 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8280 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8281 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8282 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8284 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8283 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_13;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8285 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8286 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8287 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8288 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8289 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8285 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8286 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8287 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8288 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8290 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8289 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_14;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8291 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8292 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8293 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8294 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8295 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8291 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8292 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8293 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8294 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8296 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8295 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_15;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8297 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8298 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8299 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8300 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8301 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8297 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8298 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8299 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8300 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8302 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8301 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_16;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8303 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8076 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_17;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8304 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8082 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_18;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8305 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8306 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8307 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8308 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8309 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8305 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8306 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8307 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8308 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8310 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8309 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_19;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8311 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8312 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8313 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8314 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8315 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8311 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8312 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8313 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8314 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8316 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8315 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_20;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8317 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8088 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_21;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8318 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8319 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8320 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8321 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8322 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8318 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8319 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8320 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8321 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8323 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8322 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_22;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8324 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8094 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_23;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8325 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8326 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8327 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8328 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8329 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8325 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8326 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8327 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8328 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8330 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8329 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_24;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8331 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8332 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8333 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8334 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8335 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8331 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8332 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8333 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8334 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8336 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8335 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_25;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8337 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8338 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8339 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8340 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8341 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8337 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8338 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8339 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8340 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8342 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8341 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_26;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8343 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8100 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_27;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8344 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8345 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8346 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8347 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8348 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8344 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8345 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8346 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8347 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8349 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8348 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_28;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8350 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8106 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_29;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8351 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8352 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8353 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8354 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8355 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8351 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8352 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8353 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8354 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8356 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8355 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_30;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8357 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8358 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8359 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8360 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8361 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8357 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8358 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8359 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8360 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8362 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8361 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_31;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8363 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8364 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8365 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8366 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8367 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8363 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8364 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8365 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8366 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8368 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8367 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_32;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8369 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8370 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8371 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8372 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8373 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8369 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8370 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8371 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8372 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8374 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8373 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_33;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8375 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8112 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_34;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8376 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8118 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_35;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8377 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8378 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8379 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8380 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8381 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8377 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8378 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8379 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8380 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8382 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8381 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_36;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8383 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8384 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8385 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8386 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8387 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8383 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8384 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8385 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8386 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8388 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8387 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_37;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8389 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8390 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8391 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8392 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8393 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8389 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8390 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8391 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8392 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8394 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8393 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_38;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8395 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8396 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8397 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8398 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8399 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8395 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8396 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8397 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8398 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8400 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8399 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_39;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8401 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8124 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_40;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8402 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8403 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8404 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8405 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8406 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8402 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8403 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8404 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8405 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8407 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8406 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_41;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8408 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8409 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8410 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8411 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8412 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8408 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8409 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8410 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8411 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8413 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8412 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_42;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8414 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8415 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8416 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8417 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8418 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8414 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8415 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8416 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8417 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8419 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8418 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_43;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8420 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8421 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8422 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8423 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8424 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8420 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8421 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8422 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8423 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8425 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8424 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_44;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8426 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8427 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8428 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8429 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8430 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8426 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8427 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8428 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8429 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8431 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8430 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_45;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8432 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8433 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8434 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8435 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8436 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8432 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8433 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8434 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8435 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8437 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8436 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_46;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8438 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8130 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_47;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8439 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8136 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_48;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8440 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8441 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8442 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8443 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8444 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8440 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8441 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8442 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8443 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8445 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8444 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_49;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8446 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8142 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_50;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8447 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8448 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8449 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8450 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8451 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8447 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8448 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8449 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8450 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8452 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8451 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_51;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8453 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8148 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_52;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8454 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8455 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8456 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8457 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8458 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8454 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8455 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8456 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8457 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8459 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8458 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_53;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8460 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8461 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8462 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8463 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8464 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8460 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8461 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8462 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8463 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8465 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8464 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_54;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8466 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8154 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_55;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8467 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8160 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_56;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8468 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8469 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8470 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8471 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8472 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8468 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8469 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8470 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8471 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8473 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8472 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_57;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8474 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8166 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_58;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8475 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8172 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_59;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8476 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8477 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8478 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8479 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8480 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8476 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8477 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8478 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8479 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8481 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8480 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_60;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8482 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8178 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_61;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8483 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8184 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_62;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8484 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8485 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8486 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8487 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8488 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8484 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8485 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8486 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8487 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8489 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8488 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_63;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8490 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8190 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_64;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8491 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8492 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8493 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8494 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8495 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8491 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8492 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8493 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8494 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8496 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8495 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_65;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8497 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8498 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_7811 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8499 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8500 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8501 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8497 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8498 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8499 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8500 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8502 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8501 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_66;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8503 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8504 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8505 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8506 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8507 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8503 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8504 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8505 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8506 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8508 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8507 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_67;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8509 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8510 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8511 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8512 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8513 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8509 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8510 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8511 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8512 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8514 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8513 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_68;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8515 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8196 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_69;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8516 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8517 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8518 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8519 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8520 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8516 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8517 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8518 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8519 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8521 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8520 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_70;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8522 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8523 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8524 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8525 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8526 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8522 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8523 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8524 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8525 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8527 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8526 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_71;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8528 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8202 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_72;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8529 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8530 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8531 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_7820 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8532 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_8048 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8533 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8529 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8530 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_8531 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_8532 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8534 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8533 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_73;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8535 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8208 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_74;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8536 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8214 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_75;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8537 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8538 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8539 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8540 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8541 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8537 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8538 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8539 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8540 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8542 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8541 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_76;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8543 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_7837 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8544 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8545 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8546 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8547 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_8543 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8544 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8545 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8546 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8548 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8547 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_77;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8549 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8550 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8551 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8552 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8553 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8549 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8550 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8551 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8552 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8554 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8553 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_78;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8555 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_7809 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8556 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_7832 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8557 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_7826 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8558 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_8061 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8559 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_8555 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_8556 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_8557 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_8558 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8560 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8559 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_79;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8561 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_7830 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_8562 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_7818 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_8563 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_7813 epsilon_mknows_old_pknows_current X3).
Defined.

Remark rem_8564 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_8068 epsilon_mknows_old_pknows_current X4).
Defined.

Remark rem_8565 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_8561 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_8562 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_8563 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_8564 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_8566 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8565 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_80;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8567 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_8220 epsilon_mknows_old_pknows_current X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. intros. apply trans_knows_current_nonceb_old_81;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3 A4. tauto.
Defined.

Remark rem_8568 : forall X1 X2 X3 X4:term, auto_knows_old (nonceb_old X1 X2 X3 X4) -> or_81
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4)
.
Proof.
  intros. inversion H.
  intros. apply or_81_intro_1; tauto.
  intros. apply or_81_intro_2; tauto.
  intros. apply or_81_intro_3; tauto.
  intros. apply or_81_intro_4; tauto.
  intros. apply or_81_intro_5; tauto.
  intros. apply or_81_intro_6; tauto.
  intros. apply or_81_intro_7; tauto.
  intros. apply or_81_intro_8; tauto.
  intros. apply or_81_intro_9; tauto.
  intros. apply or_81_intro_10; tauto.
  intros. apply or_81_intro_11; tauto.
  intros. apply or_81_intro_12; tauto.
  intros. apply or_81_intro_13; tauto.
  intros. apply or_81_intro_14; tauto.
  intros. apply or_81_intro_15; tauto.
  intros. apply or_81_intro_16; tauto.
  intros. apply or_81_intro_17; tauto.
  intros. apply or_81_intro_18; tauto.
  intros. apply or_81_intro_19; tauto.
  intros. apply or_81_intro_20; tauto.
  intros. apply or_81_intro_21; tauto.
  intros. apply or_81_intro_22; tauto.
  intros. apply or_81_intro_23; tauto.
  intros. apply or_81_intro_24; tauto.
  intros. apply or_81_intro_25; tauto.
  intros. apply or_81_intro_26; tauto.
  intros. apply or_81_intro_27; tauto.
  intros. apply or_81_intro_28; tauto.
  intros. apply or_81_intro_29; tauto.
  intros. apply or_81_intro_30; tauto.
  intros. apply or_81_intro_31; tauto.
  intros. apply or_81_intro_32; tauto.
  intros. apply or_81_intro_33; tauto.
  intros. apply or_81_intro_34; tauto.
  intros. apply or_81_intro_35; tauto.
  intros. apply or_81_intro_36; tauto.
  intros. apply or_81_intro_37; tauto.
  intros. apply or_81_intro_38; tauto.
  intros. apply or_81_intro_39; tauto.
  intros. apply or_81_intro_40; tauto.
  intros. apply or_81_intro_41; tauto.
  intros. apply or_81_intro_42; tauto.
  intros. apply or_81_intro_43; tauto.
  intros. apply or_81_intro_44; tauto.
  intros. apply or_81_intro_45; tauto.
  intros. apply or_81_intro_46; tauto.
  intros. apply or_81_intro_47; tauto.
  intros. apply or_81_intro_48; tauto.
  intros. apply or_81_intro_49; tauto.
  intros. apply or_81_intro_50; tauto.
  intros. apply or_81_intro_51; tauto.
  intros. apply or_81_intro_52; tauto.
  intros. apply or_81_intro_53; tauto.
  intros. apply or_81_intro_54; tauto.
  intros. apply or_81_intro_55; tauto.
  intros. apply or_81_intro_56; tauto.
  intros. apply or_81_intro_57; tauto.
  intros. apply or_81_intro_58; tauto.
  intros. apply or_81_intro_59; tauto.
  intros. apply or_81_intro_60; tauto.
  intros. apply or_81_intro_61; tauto.
  intros. apply or_81_intro_62; tauto.
  intros. apply or_81_intro_63; tauto.
  intros. apply or_81_intro_64; tauto.
  intros. apply or_81_intro_65; tauto.
  intros. apply or_81_intro_66; tauto.
  intros. apply or_81_intro_67; tauto.
  intros. apply or_81_intro_68; tauto.
  intros. apply or_81_intro_69; tauto.
  intros. apply or_81_intro_70; tauto.
  intros. apply or_81_intro_71; tauto.
  intros. apply or_81_intro_72; tauto.
  intros. apply or_81_intro_73; tauto.
  intros. apply or_81_intro_74; tauto.
  intros. apply or_81_intro_75; tauto.
  intros. apply or_81_intro_76; tauto.
  intros. apply or_81_intro_77; tauto.
  intros. apply or_81_intro_78; tauto.
  intros. apply or_81_intro_79; tauto.
  intros. apply or_81_intro_80; tauto.
  intros. apply or_81_intro_81; tauto.
Qed.

Remark rem_8569 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3 X4:term, auto_knows_old (nonceb_old X1 X2 X3 X4) -> auto_knows_current (nonceb_old X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_8568 X1 X2 X3 X4 H);  intros.
  apply (rem_8227 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8233 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8239 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8240 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8246 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8247 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8253 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8259 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8265 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8271 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8277 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8278 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8284 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8290 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8296 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8302 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8303 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8304 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8310 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8316 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8317 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8323 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8324 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8330 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8336 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8342 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8343 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8349 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8350 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8356 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8362 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8368 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8374 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8375 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8376 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8382 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8388 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8394 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8400 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8401 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8407 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8413 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8419 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8425 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8431 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8437 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8438 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8439 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8445 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8446 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8452 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8453 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8459 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8465 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8466 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8467 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8473 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8474 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8475 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8481 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8482 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8483 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8489 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8490 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8496 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8502 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8508 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8514 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8515 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8521 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8527 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8528 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8534 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8535 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8536 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8542 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8548 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8554 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8560 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8566 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
  apply (rem_8567 epsilon_mknows_old_pknows_current X1 X2 X3 X4);  tauto.
Defined.

Remark rem_8570 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7815 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8571 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7822 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8572 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7828 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_3;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8573 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7835 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_4;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8574 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7841 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_5;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8575 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7846 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_6;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8576 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7851 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_7;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8577 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7856 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_8;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8578 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7861 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_9;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8579 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7866 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_10;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8580 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7871 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_11;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8581 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7876 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_12;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8582 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7881 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_13;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8583 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7886 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_14;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8584 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7891 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_15;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8585 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7896 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_16;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8586 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7901 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_17;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8587 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7906 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_18;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8588 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7911 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_19;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8589 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7916 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_20;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8590 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7921 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_21;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8591 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7926 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_22;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8592 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7931 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_23;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8593 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7936 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_24;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8594 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7941 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_25;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8595 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7946 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_26;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8596 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7951 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_old_27;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_8597 : forall X1 X2 X3:term, auto_knows_old (session_old X1 X2 X3) -> or_27
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_27_intro_1; tauto.
  intros. apply or_27_intro_2; tauto.
  intros. apply or_27_intro_3; tauto.
  intros. apply or_27_intro_4; tauto.
  intros. apply or_27_intro_5; tauto.
  intros. apply or_27_intro_6; tauto.
  intros. apply or_27_intro_7; tauto.
  intros. apply or_27_intro_8; tauto.
  intros. apply or_27_intro_9; tauto.
  intros. apply or_27_intro_10; tauto.
  intros. apply or_27_intro_11; tauto.
  intros. apply or_27_intro_12; tauto.
  intros. apply or_27_intro_13; tauto.
  intros. apply or_27_intro_14; tauto.
  intros. apply or_27_intro_15; tauto.
  intros. apply or_27_intro_16; tauto.
  intros. apply or_27_intro_17; tauto.
  intros. apply or_27_intro_18; tauto.
  intros. apply or_27_intro_19; tauto.
  intros. apply or_27_intro_20; tauto.
  intros. apply or_27_intro_21; tauto.
  intros. apply or_27_intro_22; tauto.
  intros. apply or_27_intro_23; tauto.
  intros. apply or_27_intro_24; tauto.
  intros. apply or_27_intro_25; tauto.
  intros. apply or_27_intro_26; tauto.
  intros. apply or_27_intro_27; tauto.
Qed.

Remark rem_8598 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old (session_old X1 X2 X3) -> auto_knows_current (session_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_8597 X1 X2 X3 H);  intros.
  apply (rem_8570 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8571 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8572 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8573 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8574 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8575 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8576 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8577 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8578 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8579 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8580 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8581 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8582 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8583 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8584 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8585 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8586 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8587 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8588 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8589 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8590 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8591 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8592 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8593 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8594 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8595 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
  apply (rem_8596 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_8599 : forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_mknows_old_pknows_current 1.
  intro X. case X.
  exact (rem_8044 epsilon_mknows_old_pknows_current ).
  exact (rem_8010 epsilon_mknows_old_pknows_current ).
  intros X1 X2;  exact (rem_8015 epsilon_mknows_old_pknows_current X1 X2).
  intros X1 X2;  exact (rem_7979 epsilon_mknows_old_pknows_current X1 X2).
  exact (rem_8007 epsilon_mknows_old_pknows_current ).
  intros X1 X2;  exact (rem_8035 epsilon_mknows_old_pknows_current X1 X2).
  exact (rem_8004 epsilon_mknows_old_pknows_current ).
  intros X1 X2 X3;  exact (rem_7994 epsilon_mknows_old_pknows_current X1 X2 X3).
  intros X1 X2 X3;  exact (rem_7954 epsilon_mknows_old_pknows_current X1 X2 X3).
  intros X1 X2 X3 X4;  exact (rem_8223 epsilon_mknows_old_pknows_current X1 X2 X3 X4).
  intros X1 X2 X3 X4;  exact (rem_8569 epsilon_mknows_old_pknows_current X1 X2 X3 X4).
  exact (rem_8018 epsilon_mknows_old_pknows_current ).
  exact (rem_8226 epsilon_mknows_old_pknows_current ).
  intros X1;  exact (rem_8000 epsilon_mknows_old_pknows_current X1).
  exact (rem_8038 epsilon_mknows_old_pknows_current ).
  intros X1 X2 X3;  exact (rem_8598 epsilon_mknows_old_pknows_current X1 X2 X3).
  exact (rem_8041 epsilon_mknows_old_pknows_current ).
Qed.

Remark rem_8600 : forall _big_m:term, auto_knows_old _big_m -> auto_knows_current _big_m. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_8599 X1).
Qed.

Remark rem_8601 : forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6255 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_cons_4;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8602 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X1 X2)). tauto. exact (rem_8601 X1 X2).
Qed.

Remark rem_8603 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6264 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_cons_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8604 : forall X1 X2:term, auto__q1 X1 -> auto_knows_old X2 -> auto_knows_old (cons X1 X2). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_mknows_old_p_q1_p_q2_o X2 H); intros.
  apply (rem_8602 X1 X2);  tauto.
  apply (rem_8603 X1 X2);  tauto.
Qed.

Remark rem_8605 : forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6259 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_cons_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8606 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_old (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto_knows_old (cons X1 X2)). tauto. exact (rem_8605 X1 X2).
Qed.

Remark rem_8607 : forall X1 X2:term, auto__q2 X2 -> auto__q2 X1 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6269 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8608 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X1 -> auto_knows_old (cons X1 X2)). tauto. exact (rem_8607 X1 X2).
Qed.

Remark rem_8609 : forall X1 X2:term, auto__q2 X1 -> auto_knows_old X2 -> auto_knows_old (cons X1 X2). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_mknows_old_p_q1_p_q2_o X2 H); intros.
  apply (rem_8606 X1 X2);  tauto.
  apply (rem_8608 X1 X2);  tauto.
Qed.

Remark rem_8610 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (cons X1 X2). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (epsilon_mknows_old_p_q1_p_q2_o X1 H); intros.
  apply (rem_8604 X1 X2);  tauto.
  apply (rem_8609 X1 X2);  tauto.
Qed.

Remark rem_8611 : forall _big_m1 _big_m2:term, auto_knows_old _big_m1 -> auto_knows_old _big_m2 -> auto_knows_old (cons _big_m1 _big_m2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (cons X1 X2)). tauto. exact (rem_8610 X1 X2).
Qed.

Remark rem_8612 : forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X1 (cons X2 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6278 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_cons_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8613 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (cons X1 (cons X2 nil)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (cons X1 (cons X2 nil))). tauto. exact (rem_8612 X1 X2).
Qed.

Remark rem_8614 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (cons X1 (cons X2 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6285 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_cons_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8615 : forall X1 X2:term, auto__q1 X1 -> auto_agent X2 -> auto_knows_old (cons X1 (cons X2 nil)). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X2 H); intros.
  apply (rem_8613 X1 X2);  tauto.
  apply (rem_8614 X1 X2);  tauto.
Qed.

Remark rem_8616 : forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto_knows_old (cons X1 (cons X2 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6292 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8617 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_old (cons X1 (cons X2 nil)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto_knows_old (cons X1 (cons X2 nil))). tauto. exact (rem_8616 X1 X2).
Qed.

Remark rem_8618 : forall X1 X2:term, auto__q2 X2 -> auto__q2 X1 -> auto_knows_old (cons X1 (cons X2 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6299 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8619 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (cons X1 (cons X2 nil)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X1 -> auto_knows_old (cons X1 (cons X2 nil))). tauto. exact (rem_8618 X1 X2).
Qed.

Remark rem_8620 : forall X1 X2:term, auto__q2 X1 -> auto_agent X2 -> auto_knows_old (cons X1 (cons X2 nil)). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X2 H); intros.
  apply (rem_8617 X1 X2);  tauto.
  apply (rem_8619 X1 X2);  tauto.
Qed.

Remark rem_8621 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_knows_old (cons X1 (cons X2 nil)). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_8615 X1 X2);  tauto.
  apply (rem_8620 X1 X2);  tauto.
Qed.

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

Remark rem_8623 : forall X1 X2:term, auto__q2 X1 -> auto__q2 (key pub X2) -> auto_knows_current (key prv X2) -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto_knows_current X1). tauto. exact (rem_520 X1).
Qed.

Remark rem_8624 : forall X1:term, auto__q2 X1 -> auto__q3 pub -> auto_knows_current (key prv X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 pub -> False). tauto.
  exact (rem_6169).
Qed.

Remark rem_8625 : forall X1:term, auto__q3 pub -> auto__q2 X1 -> auto_knows_current (key prv X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q3 pub -> auto_knows_current (key prv X1) -> False). tauto. exact (rem_8624 X1).
Qed.

Remark rem_8626 : forall X1 X2:term, auto_knows_current (key X1 X2) -> or_7
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q3 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q3 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q1 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_7_intro_1; tauto.
  intros. apply or_7_intro_2; tauto.
  intros. apply or_7_intro_3; tauto.
  intros. apply or_7_intro_4; tauto.
  intros. apply or_7_intro_5; tauto.
  intros. apply or_7_intro_6; tauto.
  intros. apply or_7_intro_7; tauto.
Qed.

Remark rem_8627 : forall X1:term, auto__q3 X1 -> auto_knows_current (key prv X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intros H1. intro H. intros.
  elim (rem_8626 prv X1 H);  intros.
  apply (rem_6173 X1);  tauto.
  apply (rem_6175 X1);  tauto.
  apply (rem_6177 X1);  tauto.
  apply (rem_6179 X1);  tauto.
  apply (rem_6181 X1);  tauto.
  apply (rem_6182 X1);  tauto.
  apply (rem_6184 X1);  tauto.
Qed.

Remark rem_8628 : forall X1:term, auto__q1 pub -> auto__q3 X1 -> auto_knows_current (key prv X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 X1 -> auto_knows_current (key prv X1) -> False). tauto.
  exact (rem_8627 X1).
Qed.

Remark rem_8629 : forall X1:term, auto__q1 X1 -> auto_knows_current (key prv X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intros H1. intro H. intros.
  elim (rem_8626 prv X1 H);  intros.
  apply (rem_6189 X1);  tauto.
  apply (rem_6190 X1);  tauto.
  apply (rem_6192 X1);  tauto.
  apply (rem_6194 X1);  tauto.
  apply (rem_6195 X1);  tauto.
  apply (rem_6197 X1);  tauto.
  apply (rem_6199 X1);  tauto.
Qed.

Remark rem_8630 : forall X1:term, auto__q1 X1 -> auto__q1 pub -> auto_knows_current (key prv X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 X1 -> auto_knows_current (key prv X1) -> False). tauto.
  exact (rem_8629 X1).
Qed.

Remark rem_8631 : forall X1:term, auto__q1 pub -> auto__q1 X1 -> auto_knows_current (key prv X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q1 pub -> auto_knows_current (key prv X1) -> False). tauto. exact (rem_8630 X1).
Qed.

Remark rem_8632 : forall X1:term, auto__q1 (key pub X1) -> auto_knows_current (key prv X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_703 pub X1 H);  intros.
  apply (rem_8625 X1);  tauto.
  apply (rem_8628 X1);  tauto.
  apply (rem_8631 X1);  tauto.
Qed.

Remark rem_8633 : forall X2:term, auto__q1 (key pub X2) -> auto_knows_current (key prv X2) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 (key pub X1) -> auto_knows_current (key prv X1) -> False). tauto. exact (rem_8632 X1).
Qed.

Remark rem_8634 : forall X1 X2:term, auto__q1 (key pub X2) -> auto__q3 X1 -> auto_knows_current (key prv X2) -> auto_knows_current X1. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q1 (key pub X2) -> auto_knows_current (key prv X2) -> False). tauto.
  exact (rem_8633 X2).
Qed.

Remark rem_8635 : forall X1 X2:term, auto__q3 X1 -> auto__q1 (key pub X2) -> auto_knows_current (key prv X2) -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 (key pub X2) -> auto__q3 X1 -> auto_knows_current (key prv X2) -> auto_knows_current X1). tauto. exact (rem_8634 X1 X2).
Qed.

Remark rem_8636 : forall X1 X2:term, auto__q1 (key pub X2) -> auto__q2 X1 -> auto_knows_current (key prv X2) -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto_knows_current X1). tauto. exact (rem_520 X1).
Qed.

Remark rem_8637 : forall X1 X2:term, auto__q2 X1 -> auto__q1 (key pub X2) -> auto_knows_current (key prv X2) -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 (key pub X2) -> auto__q2 X1 -> auto_knows_current (key prv X2) -> auto_knows_current X1). tauto. exact (rem_8636 X1 X2).
Qed.

Remark rem_8638 : forall X1 X2:term, auto__q1 X1 -> auto__q3 (key pub X2) -> auto_knows_current (key prv X2) -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_current X1). tauto. exact (rem_1017 X1).
Qed.

Remark rem_8639 : forall X1 X2:term, auto__q1 X1 -> auto__q2 (key pub X2) -> auto_knows_current (key prv X2) -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_current X1). tauto. exact (rem_1017 X1).
Qed.

Remark rem_8640 : forall X1 X2:term, auto__q1 X1 -> auto__q1 (key pub X2) -> auto_knows_current (key prv X2) -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_current X1). tauto. exact (rem_1017 X1).
Qed.

Remark rem_8641 : forall X1 X2:term, auto_knows_current (crypt X1 (key pub X2)) -> auto_knows_current (key prv X2) -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1509 X1 (key pub X2) H);  intros.
  apply (rem_8623 X1 X2);  tauto.
  apply (rem_8635 X1 X2);  tauto.
  apply (rem_8637 X1 X2);  tauto.
  apply (rem_8638 X1 X2);  tauto.
  apply (rem_8639 X1 X2);  tauto.
  apply (rem_8640 X1 X2);  tauto.
Qed.

Remark rem_8642 : forall _big_k _big_m:term, auto_knows_current (crypt _big_m (key pub _big_k)) -> auto_knows_current (key prv _big_k) -> auto_knows_current _big_m. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto_knows_current (crypt X1 (key pub X2)) -> auto_knows_current (key prv X2) -> auto_knows_current X1). tauto. exact (rem_8641 X1 X2).
Qed.

Remark rem_8643 : auto_knows_old nil. (* Deduce positive atom. *)
Proof.
   case rem_1. intros. apply trans_knows_old_nil_1;  tauto.
 tauto.
Qed.

Remark rem_8644 : forall X1 X2:term, auto__q2 X1 -> auto__q2 (key sym X2) -> auto_knows_old (key sym X2) -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto_knows_old X1). tauto. exact (rem_2490 X1).
Qed.

Remark rem_8645 : forall X1:term, auto__q2 X1 -> auto__q3 sym -> auto_knows_old (key sym X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 sym -> False). tauto.
  exact (rem_6215).
Qed.

Remark rem_8646 : forall X1:term, auto__q3 sym -> auto__q2 X1 -> auto_knows_old (key sym X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q3 sym -> auto_knows_old (key sym X1) -> False). tauto. exact (rem_8645 X1).
Qed.

Remark rem_8647 : forall X1:term, auto__q1 sym -> auto__q3 X1 -> auto_knows_old (key sym X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 sym -> False). tauto.
  exact (rem_6218).
Qed.

Remark rem_8648 : forall X1:term, auto__q1 X1 -> auto__q1 sym -> auto_knows_old (key sym X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 sym -> False). tauto.
  exact (rem_6218).
Qed.

Remark rem_8649 : forall X1:term, auto__q1 sym -> auto__q1 X1 -> auto_knows_old (key sym X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q1 sym -> auto_knows_old (key sym X1) -> False). tauto. exact (rem_8648 X1).
Qed.

Remark rem_8650 : forall X1:term, auto__q1 (key sym X1) -> auto_knows_old (key sym X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_703 sym X1 H);  intros.
  apply (rem_8646 X1);  tauto.
  apply (rem_8647 X1);  tauto.
  apply (rem_8649 X1);  tauto.
Qed.

Remark rem_8651 : forall X2:term, auto__q1 (key sym X2) -> auto_knows_old (key sym X2) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 (key sym X1) -> auto_knows_old (key sym X1) -> False). tauto. exact (rem_8650 X1).
Qed.

Remark rem_8652 : forall X1 X2:term, auto__q1 (key sym X2) -> auto__q3 X1 -> auto_knows_old (key sym X2) -> auto_knows_old X1. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q1 (key sym X2) -> auto_knows_old (key sym X2) -> False). tauto.
  exact (rem_8651 X2).
Qed.

Remark rem_8653 : forall X1 X2:term, auto__q3 X1 -> auto__q1 (key sym X2) -> auto_knows_old (key sym X2) -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 (key sym X2) -> auto__q3 X1 -> auto_knows_old (key sym X2) -> auto_knows_old X1). tauto. exact (rem_8652 X1 X2).
Qed.

Remark rem_8654 : forall X1 X2:term, auto__q1 (key sym X2) -> auto__q2 X1 -> auto_knows_old (key sym X2) -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto_knows_old X1). tauto. exact (rem_2490 X1).
Qed.

Remark rem_8655 : forall X1 X2:term, auto__q2 X1 -> auto__q1 (key sym X2) -> auto_knows_old (key sym X2) -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 (key sym X2) -> auto__q2 X1 -> auto_knows_old (key sym X2) -> auto_knows_old X1). tauto. exact (rem_8654 X1 X2).
Qed.

Remark rem_8656 : forall X1 X2:term, auto__q1 X1 -> auto__q3 (key sym X2) -> auto_knows_old (key sym X2) -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_old X1). tauto. exact (rem_2969 X1).
Qed.

Remark rem_8657 : forall X1 X2:term, auto__q1 X1 -> auto__q2 (key sym X2) -> auto_knows_old (key sym X2) -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_old X1). tauto. exact (rem_2969 X1).
Qed.

Remark rem_8658 : forall X1 X2:term, auto__q1 X1 -> auto__q1 (key sym X2) -> auto_knows_old (key sym X2) -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_old X1). tauto. exact (rem_2969 X1).
Qed.

Remark rem_8659 : forall X1 X2:term, auto_knows_old (crypt X1 (key sym X2)) -> auto_knows_old (key sym X2) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_5580 X1 (key sym X2) H);  intros.
  apply (rem_8644 X1 X2);  tauto.
  apply (rem_8653 X1 X2);  tauto.
  apply (rem_8655 X1 X2);  tauto.
  apply (rem_8656 X1 X2);  tauto.
  apply (rem_8657 X1 X2);  tauto.
  apply (rem_8658 X1 X2);  tauto.
Qed.

Remark rem_8660 : forall _big_m X:term, auto_knows_old (crypt _big_m (key sym X)) -> auto_knows_old (key sym X) -> auto_knows_old _big_m. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old (crypt X1 (key sym X2)) -> auto_knows_old (key sym X2) -> auto_knows_old X1). tauto. exact (rem_8659 X1 X2).
Qed.

Remark rem_8661 : forall X1:term, auto__q1 X1 -> auto_knows_old (s X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_6914 X1 A1). clear  A1. intros. apply trans_knows_old_s_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_8662 : forall X1:term, auto__q2 X1 -> auto_knows_old (s X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_6916 X1 A1). clear  A1. intros. apply trans_knows_old_s_2;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_8663 : forall X1:term, auto_knows_old X1 -> auto_knows_old (s X1). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1. intro H. intros.
  elim (epsilon_mknows_old_p_q1_p_q2_o X1 H); intros.
  apply (rem_8661 X1);  tauto.
  apply (rem_8662 X1);  tauto.
Qed.

Remark rem_8664 : forall _big_m:term, auto_knows_old _big_m -> auto_knows_old (s _big_m). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto_knows_old X1 -> auto_knows_old (s X1)). tauto. exact (rem_8663 X1).
Qed.

Remark rem_8665 : auto__q1 pub. (* Deduce positive atom. *)
Proof.
   case rem_1. intros. apply trans__q1_pub_1;  tauto.
 tauto.
Qed.

Remark rem_8666 : auto__q1 alice. (* Deduce positive atom. *)
Proof.
   case rem_1. intros. apply trans__q1_alice_1;  tauto.
 tauto.
Qed.

Remark rem_8667 : (auto__q1 pub /\ auto__q1 alice) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   cut (auto__q1 pub). 2:apply rem_8665.
  cut (auto__q1 alice). 2:apply rem_8666.
  tauto.
Qed.

Remark rem_8668 : auto__q1 (key pub alice). (* Deduce positive atom. *)
Proof.
   case rem_8667. intros. apply trans__q1_key_3;  tauto.
 tauto.
Qed.

Remark rem_8669 : (auto__q1 (key pub alice) /\ auto__q1 alice) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   cut (auto__q1 (key pub alice)). 2:apply rem_8668.
  cut (auto__q1 alice). 2:apply rem_8666.
  tauto.
Qed.

Remark rem_8670 : auto_has_pub_key (key pub alice) alice. (* Deduce positive atom. *)
Proof.
   case rem_8669. intros. apply trans_has_pub_key_1;  tauto.
 tauto.
Qed.

Remark rem_8671 : auto__q1 server. (* Deduce positive atom. *)
Proof.
   case rem_1. intros. apply trans__q1_server_1;  tauto.
 tauto.
Qed.

Remark rem_8672 : (auto__q1 pub /\ auto__q1 server) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   cut (auto__q1 pub). 2:apply rem_8665.
  cut (auto__q1 server). 2:apply rem_8671.
  tauto.
Qed.

Remark rem_8673 : auto__q1 (key pub server). (* Deduce positive atom. *)
Proof.
   case rem_8672. intros. apply trans__q1_key_3;  tauto.
 tauto.
Qed.

Remark rem_8674 : (auto__q1 (key pub server) /\ auto__q1 server) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   cut (auto__q1 (key pub server)). 2:apply rem_8673.
  cut (auto__q1 server). 2:apply rem_8671.
  tauto.
Qed.

Remark rem_8675 : auto_has_pub_key (key pub server) server. (* Deduce positive atom. *)
Proof.
   case rem_8674. intros. apply trans_has_pub_key_1;  tauto.
 tauto.
Qed.

Remark rem_8676 : forall X1 X2:term, auto__q1 X2 -> auto_agent X1 -> auto_knows_old (cons X1 (cons X2 nil)). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_8612 X1 X2);  tauto.
  apply (rem_8616 X1 X2);  tauto.
Qed.

Remark rem_8677 : forall X1 X2:term, auto__q2 X2 -> auto__q1 X1 -> auto_knows_old (cons X1 (cons X2 nil)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (cons X1 (cons X2 nil))). tauto. exact (rem_8614 X1 X2).
Qed.

Remark rem_8678 : forall X1 X2:term, auto__q2 X2 -> auto_agent X1 -> auto_knows_old (cons X1 (cons X2 nil)). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_8677 X1 X2);  tauto.
  apply (rem_8618 X1 X2);  tauto.
Qed.

Remark rem_8679 : forall X1 X2:term, auto_agent X2 -> auto_agent X1 -> auto_knows_old (cons X1 (cons X2 nil)). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X2 H); intros.
  apply (rem_8676 X1 X2);  tauto.
  apply (rem_8678 X1 X2);  tauto.
Qed.

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

Remark rem_8681 : forall X1:term, auto_knows_old (s X1) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_7999 X1 H);  intros.
  apply (rem_2969 X1);  tauto.
  apply (rem_2490 X1);  tauto.
Qed.

Remark rem_8682 : forall _big_m:term, auto_knows_old (s _big_m) -> auto_knows_old _big_m. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto_knows_old (s X1) -> auto_knows_old X1). tauto. exact (rem_8681 X1).
Qed.

Remark rem_8683 : forall X1:term, auto__q1 X1 -> auto_knows_old (key pub X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_1979 X1 A1). clear  A1. intros. apply trans_knows_old_key_7;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_8684 : forall X1:term, auto__q3 X1 -> auto_knows_old (key pub X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_1983 X1 A1). clear  A1. intros. apply trans_knows_old_key_5;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_8685 : forall X1:term, auto__q2 X1 -> auto_knows_old (key pub X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_1987 X1 A1). clear  A1. intros. apply trans_knows_old_key_6;  tauto.
 clear  A1. tauto.
Qed.

Hint Constructors or_3 : or_3_hint.

Remark rem_8686 : forall X1:term, auto_knows_old (key pub X1). (* Cut. *)
Proof.
  intros X1.
  cut (or_3 (auto__q1 X1) (auto__q3 X1) (auto__q2 X1)). intro H. elim H.
  assert (HH:=(rem_8683 X1)). tauto.
  assert (HH:=(rem_8684 X1)). tauto.
  assert (HH:=(rem_8685 X1)). tauto.
  assert (HH:=(rem_1976 X1)). intuition auto with or_3_hint.
Qed.

Remark rem_8687 : forall X:term, auto_knows_old (key pub X). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto_knows_old (key pub X1)). tauto. exact (rem_8686 X1).
Qed.

Remark rem_8688 : forall X1 X2 X3 X4:term, auto__q2 (cons X2 (cons X3 nil)) -> auto__q2 (key prv server) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (key prv server) -> False). tauto.
  exact (rem_1034).
Qed.

Remark rem_8689 : forall X1 X2 X3 X4:term, auto__q1 (key prv server) -> auto__q3 (cons X2 (cons X3 nil)) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> False). tauto.
  exact (rem_1040).
Qed.

Remark rem_8690 : forall X1 X2 X3 X4:term, auto__q3 (cons X2 (cons X3 nil)) -> auto__q1 (key prv server) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> auto__q3 (cons X2 (cons X3 nil)) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8689 X1 X2 X3 X4).
Qed.

Remark rem_8691 : forall X1 X2 X3 X4:term, auto__q1 (key prv server) -> auto__q2 (cons X2 (cons X3 nil)) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> False). tauto.
  exact (rem_1040).
Qed.

Remark rem_8692 : forall X1 X2 X3 X4:term, auto__q2 (cons X2 (cons X3 nil)) -> auto__q1 (key prv server) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (key prv server) -> auto__q2 (cons X2 (cons X3 nil)) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8691 X1 X2 X3 X4).
Qed.

Remark rem_8693 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_8694 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8695 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_8693 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8694 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8696 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8695 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8697 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8696 X1 X2 X3 X4).
Qed.

Remark rem_8698 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_8699 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8700 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_8698 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8699 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8701 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8700 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8702 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8701 X1 X2 X3 X4).
Qed.

Remark rem_8703 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_8704 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8705 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_8703 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8704 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8706 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8705 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8707 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8706 X1 X2 X3 X4).
Qed.

Remark rem_8708 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_8697 X1 X2 X3 X4);  tauto.
  apply (rem_8702 X1 X2 X3 X4);  tauto.
  apply (rem_8707 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8709 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8708 X1 X2 X3 X4).
Qed.

Remark rem_8710 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_8711 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8712 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_8710 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8711 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8713 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8712 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8714 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8713 X1 X2 X3 X4).
Qed.

Remark rem_8715 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_8714 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8716 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8715 X1 X2 X3 X4).
Qed.

Remark rem_8717 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (key pub X3) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_8718 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (key pub X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8719 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (key pub X3) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_8717 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8718 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8720 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8719 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8721 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8720 X1 X2 X3 X4).
Qed.

Remark rem_8722 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_8721 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8723 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X3 -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8722 X1 X2 X3 X4).
Qed.

Remark rem_8724 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 (noncea_old X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_8709 X1 X2 X3 X4);  tauto.
  apply (rem_8716 X1 X2 X3 X4);  tauto.
  apply (rem_8723 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8725 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8724 X1 X2 X3 X4).
Qed.

Remark rem_8726 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_8727 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8728 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_8726 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8727 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8729 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8728 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8730 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8729 X1 X2 X3 X4).
Qed.

Remark rem_8731 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_8732 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8733 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_8731 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8732 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8734 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8733 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8735 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8734 X1 X2 X3 X4).
Qed.

Remark rem_8736 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_8737 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8738 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_8736 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8737 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8739 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8738 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8740 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8739 X1 X2 X3 X4).
Qed.

Remark rem_8741 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_8742 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8743 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_8741 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8742 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8744 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8743 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8745 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8744 X1 X2 X3 X4).
Qed.

Remark rem_8746 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_8747 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8748 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_8746 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8747 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8749 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8748 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8750 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8749 X1 X2 X3 X4).
Qed.

Remark rem_8751 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X4 nil) H);  intros.
  apply (rem_8730 X1 X2 X3 X4);  tauto.
  apply (rem_8735 X1 X2 X3 X4);  tauto.
  apply (rem_8740 X1 X2 X3 X4);  tauto.
  apply (rem_8745 X1 X2 X3 X4);  tauto.
  apply (rem_8750 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8752 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8751 X1 X2 X3 X4).
Qed.

Remark rem_8753 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_8754 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8755 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_8753 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8754 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8756 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8755 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8757 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8756 X1 X2 X3 X4).
Qed.

Remark rem_8758 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_8757 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8759 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X3 X4 X2) -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8758 X1 X2 X3 X4).
Qed.

Remark rem_8760 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8761 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8760 X1 X2 X3 X4).
Qed.

Remark rem_8762 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8763 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8762 X1 X2 X3 X4).
Qed.

Remark rem_8764 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_8765 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8764 X1 X2 X3 X4).
Qed.

Remark rem_8766 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_25 X3 X4 X2 H);  intros.
  apply (rem_8761 X1 X2 X3 X4);  tauto.
  apply (rem_8763 X1 X2 X3 X4);  tauto.
  apply (rem_8765 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8767 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8766 X1 X2 X3 X4).
Qed.

Remark rem_8768 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_8769 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8770 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_8768 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8769 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8771 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8770 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8772 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8771 X1 X2 X3 X4).
Qed.

Remark rem_8773 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_8774 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8775 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_8773 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8774 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8776 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8775 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8777 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8776 X1 X2 X3 X4).
Qed.

Remark rem_8778 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_8779 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8780 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_8778 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8779 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8781 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8780 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8782 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8781 X1 X2 X3 X4).
Qed.

Remark rem_8783 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X4 nil) H);  intros.
  apply (rem_8772 X1 X2 X3 X4);  tauto.
  apply (rem_8777 X1 X2 X3 X4);  tauto.
  apply (rem_8782 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8784 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X3 X4 X2) -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8783 X1 X2 X3 X4).
Qed.

Remark rem_8785 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_8786 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8785 X1 X2 X3 X4).
Qed.

Remark rem_8787 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8788 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8787 X1 X2 X3 X4).
Qed.

Remark rem_8789 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8790 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8789 X1 X2 X3 X4).
Qed.

Remark rem_8791 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1213 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_8792 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8791 X1 X2 X3).
Qed.

Remark rem_8793 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1218 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_8794 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8793 X1 X2 X3).
Qed.

Remark rem_8795 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1223 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_8796 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8795 X1 X2 X3).
Qed.

Remark rem_8797 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1228 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_8798 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8797 X1 X2 X3).
Qed.

Remark rem_8799 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X3 nil) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1233 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_8800 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X3 nil) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8799 X1 X2 X3).
Qed.

Remark rem_8801 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1107 X1 (cons X3 nil) H);  intros.
  apply (rem_8792 X1 X2 X3);  tauto.
  apply (rem_8794 X1 X2 X3);  tauto.
  apply (rem_8796 X1 X2 X3);  tauto.
  apply (rem_8798 X1 X2 X3);  tauto.
  apply (rem_8800 X1 X2 X3);  tauto.
Qed.

Remark rem_8802 : forall X1 X2 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8801 X1 X2 X3).
Qed.

Remark rem_8803 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_8802 X1 X2 X4).
Qed.

Remark rem_8804 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8803 X1 X2 X3 X4).
Qed.

Remark rem_8805 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_8806 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8805 X1 X2 X3 X4).
Qed.

Remark rem_8807 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8808 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8807 X1 X2 X3 X4).
Qed.

Remark rem_8809 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8810 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8809 X1 X2 X3 X4).
Qed.

Remark rem_8811 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8812 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8811 X1 X2 X3 X4).
Qed.

Remark rem_8813 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_8814 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8813 X1 X2 X3 X4).
Qed.

Remark rem_8815 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8816 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8815 X1 X2 X3 X4).
Qed.

Remark rem_8817 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8818 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8817 X1 X2 X3 X4).
Qed.

Remark rem_8819 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_8820 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8819 X1 X2 X3 X4).
Qed.

Remark rem_8821 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8822 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8821 X1 X2 X3 X4).
Qed.

Remark rem_8823 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_8824 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8823 X1 X2 X3 X4).
Qed.

Remark rem_8825 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_8826 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8825 X1 X2 X3 X4).
Qed.

Remark rem_8827 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_8828 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8827 X1 X2 X3 X4).
Qed.

Remark rem_8829 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_8830 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8829 X1 X2 X3 X4).
Qed.

Remark rem_8831 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_8832 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8831 X1 X2 X3 X4).
Qed.

Remark rem_8833 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8834 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8833 X1 X2 X3 X4).
Qed.

Remark rem_8835 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_8836 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8835 X1 X2 X3 X4).
Qed.

Remark rem_8837 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8838 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8837 X1 X2 X3 X4).
Qed.

Remark rem_8839 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_8840 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8839 X1 X2 X3 X4).
Qed.

Remark rem_8841 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_8842 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8841 X1 X2 X3 X4).
Qed.

Remark rem_8843 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_8844 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8843 X1 X2 X3 X4).
Qed.

Remark rem_8845 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_651 X3 X4 X2 H);  intros.
  apply (rem_8786 X1 X2 X3 X4);  tauto.
  apply (rem_8788 X1 X2 X3 X4);  tauto.
  apply (rem_8790 X1 X2 X3 X4);  tauto.
  apply (rem_8804 X1 X2 X3 X4);  tauto.
  apply (rem_8806 X1 X2 X3 X4);  tauto.
  apply (rem_8808 X1 X2 X3 X4);  tauto.
  apply (rem_8810 X1 X2 X3 X4);  tauto.
  apply (rem_8812 X1 X2 X3 X4);  tauto.
  apply (rem_8814 X1 X2 X3 X4);  tauto.
  apply (rem_8816 X1 X2 X3 X4);  tauto.
  apply (rem_8818 X1 X2 X3 X4);  tauto.
  apply (rem_8820 X1 X2 X3 X4);  tauto.
  apply (rem_8822 X1 X2 X3 X4);  tauto.
  apply (rem_8824 X1 X2 X3 X4);  tauto.
  apply (rem_8826 X1 X2 X3 X4);  tauto.
  apply (rem_8828 X1 X2 X3 X4);  tauto.
  apply (rem_8830 X1 X2 X3 X4);  tauto.
  apply (rem_8832 X1 X2 X3 X4);  tauto.
  apply (rem_8834 X1 X2 X3 X4);  tauto.
  apply (rem_8836 X1 X2 X3 X4);  tauto.
  apply (rem_8838 X1 X2 X3 X4);  tauto.
  apply (rem_8840 X1 X2 X3 X4);  tauto.
  apply (rem_8842 X1 X2 X3 X4);  tauto.
  apply (rem_8844 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8846 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8845 X1 X2 X3 X4).
Qed.

Remark rem_8847 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 (noncea_old X3 X4 X2) (cons X1 (cons X4 nil)) H);  intros.
  apply (rem_8752 X1 X2 X3 X4);  tauto.
  apply (rem_8759 X1 X2 X3 X4);  tauto.
  apply (rem_8767 X1 X2 X3 X4);  tauto.
  apply (rem_8784 X1 X2 X3 X4);  tauto.
  apply (rem_8846 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8848 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q3 pub -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_8847 X1 X2 X3 X4).
Qed.

Remark rem_8849 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q3 pub -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8848 X1 X2 X3 X4).
Qed.

Remark rem_8850 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_8851 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8852 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_8850 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8851 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8853 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8852 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8854 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8853 X1 X2 X3 X4).
Qed.

Remark rem_8855 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_8856 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8857 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_8855 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8856 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8858 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8857 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8859 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8858 X1 X2 X3 X4).
Qed.

Remark rem_8860 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_8861 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8862 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_8860 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8861 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8863 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8862 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8864 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8863 X1 X2 X3 X4).
Qed.

Remark rem_8865 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_8866 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8867 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_8865 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8866 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8868 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8867 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8869 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8868 X1 X2 X3 X4).
Qed.

Remark rem_8870 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_8871 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8872 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_8870 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8871 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8873 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8872 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8874 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8873 X1 X2 X3 X4).
Qed.

Remark rem_8875 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X3 nil) H);  intros.
  apply (rem_8854 X1 X2 X3 X4);  tauto.
  apply (rem_8859 X1 X2 X3 X4);  tauto.
  apply (rem_8864 X1 X2 X3 X4);  tauto.
  apply (rem_8869 X1 X2 X3 X4);  tauto.
  apply (rem_8874 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8876 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8875 X1 X2 X3 X4).
Qed.

Remark rem_8877 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_8878 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8879 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_8877 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8878 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8880 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8879 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8881 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8880 X1 X2 X3 X4).
Qed.

Remark rem_8882 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_8881 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8883 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8882 X1 X2 X3 X4).
Qed.

Remark rem_8884 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_8885 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8884 X1 X2 X3 X4).
Qed.

Remark rem_8886 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_8887 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8886 X1 X2 X3 X4).
Qed.

Remark rem_8888 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_8889 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8888 X1 X2 X3 X4).
Qed.

Remark rem_8890 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_25 X4 X3 X2 H);  intros.
  apply (rem_8885 X1 X2 X3 X4);  tauto.
  apply (rem_8887 X1 X2 X3 X4);  tauto.
  apply (rem_8889 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8891 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8890 X1 X2 X3 X4).
Qed.

Remark rem_8892 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_8893 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8894 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_8892 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8893 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8895 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8894 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8896 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8895 X1 X2 X3 X4).
Qed.

Remark rem_8897 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_8898 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8899 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_8897 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8898 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8900 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8899 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8901 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8900 X1 X2 X3 X4).
Qed.

Remark rem_8902 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_8903 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8904 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_8902 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8903 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8905 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8904 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8906 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8905 X1 X2 X3 X4).
Qed.

Remark rem_8907 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_8896 X1 X2 X3 X4);  tauto.
  apply (rem_8901 X1 X2 X3 X4);  tauto.
  apply (rem_8906 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8908 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8907 X1 X2 X3 X4).
Qed.

Remark rem_8909 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_8910 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8909 X1 X2 X3 X4).
Qed.

Remark rem_8911 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8912 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8911 X1 X2 X3 X4).
Qed.

Remark rem_8913 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8914 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8913 X1 X2 X3 X4).
Qed.

Remark rem_8915 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8819 X1 X2 X3 X4).
Qed.

Remark rem_8916 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_8917 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8916 X1 X2 X3 X4).
Qed.

Remark rem_8918 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8837 X1 X2 X3 X4).
Qed.

Remark rem_8919 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8821 X1 X2 X3 X4).
Qed.

Remark rem_8920 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8762 X1 X2 X3 X4).
Qed.

Remark rem_8921 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_8922 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8921 X1 X2 X3 X4).
Qed.

Remark rem_8923 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_8924 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8923 X1 X2 X3 X4).
Qed.

Remark rem_8925 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_8926 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8925 X1 X2 X3 X4).
Qed.

Remark rem_8927 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_8801 X1 X2 X3).
Qed.

Remark rem_8928 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8927 X1 X2 X3 X4).
Qed.

Remark rem_8929 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_8930 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8929 X1 X2 X3 X4).
Qed.

Remark rem_8931 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_8932 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8931 X1 X2 X3 X4).
Qed.

Remark rem_8933 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8805 X1 X2 X3 X4).
Qed.

Remark rem_8934 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_8935 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8934 X1 X2 X3 X4).
Qed.

Remark rem_8936 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_8937 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8936 X1 X2 X3 X4).
Qed.

Remark rem_8938 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8760 X1 X2 X3 X4).
Qed.

Remark rem_8939 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_8940 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8939 X1 X2 X3 X4).
Qed.

Remark rem_8941 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8817 X1 X2 X3 X4).
Qed.

Remark rem_8942 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_8943 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8942 X1 X2 X3 X4).
Qed.

Remark rem_8944 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8815 X1 X2 X3 X4).
Qed.

Remark rem_8945 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8764 X1 X2 X3 X4).
Qed.

Remark rem_8946 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_8947 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8946 X1 X2 X3 X4).
Qed.

Remark rem_8948 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_651 X3 X4 X2 H);  intros.
  apply (rem_8910 X1 X2 X3 X4);  tauto.
  apply (rem_8912 X1 X2 X3 X4);  tauto.
  apply (rem_8914 X1 X2 X3 X4);  tauto.
  apply (rem_8915 X1 X2 X3 X4);  tauto.
  apply (rem_8917 X1 X2 X3 X4);  tauto.
  apply (rem_8918 X1 X2 X3 X4);  tauto.
  apply (rem_8919 X1 X2 X3 X4);  tauto.
  apply (rem_8920 X1 X2 X3 X4);  tauto.
  apply (rem_8922 X1 X2 X3 X4);  tauto.
  apply (rem_8924 X1 X2 X3 X4);  tauto.
  apply (rem_8926 X1 X2 X3 X4);  tauto.
  apply (rem_8928 X1 X2 X3 X4);  tauto.
  apply (rem_8930 X1 X2 X3 X4);  tauto.
  apply (rem_8932 X1 X2 X3 X4);  tauto.
  apply (rem_8933 X1 X2 X3 X4);  tauto.
  apply (rem_8935 X1 X2 X3 X4);  tauto.
  apply (rem_8937 X1 X2 X3 X4);  tauto.
  apply (rem_8938 X1 X2 X3 X4);  tauto.
  apply (rem_8940 X1 X2 X3 X4);  tauto.
  apply (rem_8941 X1 X2 X3 X4);  tauto.
  apply (rem_8943 X1 X2 X3 X4);  tauto.
  apply (rem_8944 X1 X2 X3 X4);  tauto.
  apply (rem_8945 X1 X2 X3 X4);  tauto.
  apply (rem_8947 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8949 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8948 X1 X2 X3 X4).
Qed.

Remark rem_8950 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 (noncea_old X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_8876 X1 X2 X3 X4);  tauto.
  apply (rem_8883 X1 X2 X3 X4);  tauto.
  apply (rem_8891 X1 X2 X3 X4);  tauto.
  apply (rem_8908 X1 X2 X3 X4);  tauto.
  apply (rem_8949 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8951 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_8950 X1 X2 X3 X4).
Qed.

Remark rem_8952 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8951 X1 X2 X3 X4).
Qed.

Remark rem_8953 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_8954 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8955 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_8953 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8954 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8956 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8955 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8957 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8956 X1 X2 X3 X4).
Qed.

Remark rem_8958 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_8959 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8960 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_8958 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8959 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8961 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8960 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8962 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8961 X1 X2 X3 X4).
Qed.

Remark rem_8963 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_8964 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8965 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_8963 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8964 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8966 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8965 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8967 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8966 X1 X2 X3 X4).
Qed.

Remark rem_8968 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_8969 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8970 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_8968 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8969 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8971 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8970 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8972 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8971 X1 X2 X3 X4).
Qed.

Remark rem_8973 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_8974 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8975 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_8973 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8974 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8976 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8975 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8977 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8976 X1 X2 X3 X4).
Qed.

Remark rem_8978 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X4 nil) H);  intros.
  apply (rem_8957 X1 X2 X3 X4);  tauto.
  apply (rem_8962 X1 X2 X3 X4);  tauto.
  apply (rem_8967 X1 X2 X3 X4);  tauto.
  apply (rem_8972 X1 X2 X3 X4);  tauto.
  apply (rem_8977 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8979 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8978 X1 X2 X3 X4).
Qed.

Remark rem_8980 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_8981 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8982 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_8980 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8981 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8983 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8982 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8984 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8983 X1 X2 X3 X4).
Qed.

Remark rem_8985 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X4 nil) H);  intros.
  apply (rem_8984 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8986 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X3 X4 X2) -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8985 X1 X2 X3 X4).
Qed.

Remark rem_8987 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8936 X1 X2 X3 X4).
Qed.

Remark rem_8988 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8939 X1 X2 X3 X4).
Qed.

Remark rem_8989 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8934 X1 X2 X3 X4).
Qed.

Remark rem_8990 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_25 X3 X4 X2 H);  intros.
  apply (rem_8987 X1 X2 X3 X4);  tauto.
  apply (rem_8988 X1 X2 X3 X4);  tauto.
  apply (rem_8989 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_8991 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8990 X1 X2 X3 X4).
Qed.

Remark rem_8992 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_8993 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8994 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_8992 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8993 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_8995 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8994 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_8996 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8995 X1 X2 X3 X4).
Qed.

Remark rem_8997 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_8998 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_8999 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_old X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_8997 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_8998 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9000 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_8999 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9001 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9000 X1 X2 X3 X4).
Qed.

Remark rem_9002 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9003 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9004 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9002 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9003 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9005 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9004 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9006 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9005 X1 X2 X3 X4).
Qed.

Remark rem_9007 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X4 nil) H);  intros.
  apply (rem_8996 X1 X2 X3 X4);  tauto.
  apply (rem_9001 X1 X2 X3 X4);  tauto.
  apply (rem_9006 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9008 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X3 X4 X2) -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9007 X1 X2 X3 X4).
Qed.

Remark rem_9009 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9010 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9009 X1 X2 X3 X4).
Qed.

Remark rem_9011 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9012 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9011 X1 X2 X3 X4).
Qed.

Remark rem_9013 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9014 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9013 X1 X2 X3 X4).
Qed.

Remark rem_9015 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8823 X1 X2 X3 X4).
Qed.

Remark rem_9016 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8946 X1 X2 X3 X4).
Qed.

Remark rem_9017 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8787 X1 X2 X3 X4).
Qed.

Remark rem_9018 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8789 X1 X2 X3 X4).
Qed.

Remark rem_9019 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8833 X1 X2 X3 X4).
Qed.

Remark rem_9020 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9021 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9020 X1 X2 X3 X4).
Qed.

Remark rem_9022 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8909 X1 X2 X3 X4).
Qed.

Remark rem_9023 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8921 X1 X2 X3 X4).
Qed.

Remark rem_9024 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8931 X1 X2 X3 X4).
Qed.

Remark rem_9025 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8913 X1 X2 X3 X4).
Qed.

Remark rem_9026 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_8802 X1 X2 X4).
Qed.

Remark rem_9027 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9026 X1 X2 X3 X4).
Qed.

Remark rem_9028 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8843 X1 X2 X3 X4).
Qed.

Remark rem_9029 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_9030 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9029 X1 X2 X3 X4).
Qed.

Remark rem_9031 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9032 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9031 X1 X2 X3 X4).
Qed.

Remark rem_9033 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8829 X1 X2 X3 X4).
Qed.

Remark rem_9034 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9035 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9034 X1 X2 X3 X4).
Qed.

Remark rem_9036 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8813 X1 X2 X3 X4).
Qed.

Remark rem_9037 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8911 X1 X2 X3 X4).
Qed.

Remark rem_9038 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8785 X1 X2 X3 X4).
Qed.

Remark rem_9039 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8827 X1 X2 X3 X4).
Qed.

Remark rem_9040 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9041 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9040 X1 X2 X3 X4).
Qed.

Remark rem_9042 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_651 X3 X4 X2 H);  intros.
  apply (rem_9010 X1 X2 X3 X4);  tauto.
  apply (rem_9012 X1 X2 X3 X4);  tauto.
  apply (rem_9014 X1 X2 X3 X4);  tauto.
  apply (rem_9015 X1 X2 X3 X4);  tauto.
  apply (rem_9016 X1 X2 X3 X4);  tauto.
  apply (rem_9017 X1 X2 X3 X4);  tauto.
  apply (rem_9018 X1 X2 X3 X4);  tauto.
  apply (rem_9019 X1 X2 X3 X4);  tauto.
  apply (rem_9021 X1 X2 X3 X4);  tauto.
  apply (rem_9022 X1 X2 X3 X4);  tauto.
  apply (rem_9023 X1 X2 X3 X4);  tauto.
  apply (rem_9024 X1 X2 X3 X4);  tauto.
  apply (rem_9025 X1 X2 X3 X4);  tauto.
  apply (rem_9027 X1 X2 X3 X4);  tauto.
  apply (rem_9028 X1 X2 X3 X4);  tauto.
  apply (rem_9030 X1 X2 X3 X4);  tauto.
  apply (rem_9032 X1 X2 X3 X4);  tauto.
  apply (rem_9033 X1 X2 X3 X4);  tauto.
  apply (rem_9035 X1 X2 X3 X4);  tauto.
  apply (rem_9036 X1 X2 X3 X4);  tauto.
  apply (rem_9037 X1 X2 X3 X4);  tauto.
  apply (rem_9038 X1 X2 X3 X4);  tauto.
  apply (rem_9039 X1 X2 X3 X4);  tauto.
  apply (rem_9041 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9043 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X3 X4 X2) -> auto__q3 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q3 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9042 X1 X2 X3 X4).
Qed.

Remark rem_9044 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 (noncea_old X3 X4 X2) (cons X1 (cons X4 nil)) H);  intros.
  apply (rem_8979 X1 X2 X3 X4);  tauto.
  apply (rem_8986 X1 X2 X3 X4);  tauto.
  apply (rem_8991 X1 X2 X3 X4);  tauto.
  apply (rem_9008 X1 X2 X3 X4);  tauto.
  apply (rem_9043 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9045 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X4 -> auto__q3 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9044 X1 X2 X3 X4).
Qed.

Remark rem_9046 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X4 -> auto__q3 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9045 X1 X2 X3 X4).
Qed.

Remark rem_9047 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q2 X4 -> auto__q3 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_8849 X1 X2 X3 X4);  tauto.
  apply (rem_8952 X1 X2 X3 X4);  tauto.
  apply (rem_9046 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9048 : forall X1 X2 X3 X4:term, auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q2 X4 -> auto__q3 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9047 X1 X2 X3 X4).
Qed.

Remark rem_9049 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9050 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9051 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9049 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9050 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9052 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9051 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9053 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9052 X1 X2 X3 X4).
Qed.

Remark rem_9054 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9055 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9056 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9054 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9055 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9057 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9056 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9058 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9057 X1 X2 X3 X4).
Qed.

Remark rem_9059 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9060 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9061 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9059 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9060 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9062 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9061 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9063 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9062 X1 X2 X3 X4).
Qed.

Remark rem_9064 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X4 nil) H);  intros.
  apply (rem_9053 X1 X2 X3 X4);  tauto.
  apply (rem_9058 X1 X2 X3 X4);  tauto.
  apply (rem_9063 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9065 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X3 X4 X2) -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9064 X1 X2 X3 X4).
Qed.

Remark rem_9066 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9067 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9068 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9066 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9067 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9069 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9068 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9070 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9069 X1 X2 X3 X4).
Qed.

Remark rem_9071 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9070 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9072 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X3 X4 X2) -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9071 X1 X2 X3 X4).
Qed.

Remark rem_9073 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (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_1057 X1).
Qed.

Remark rem_9074 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (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_1047 X2).
Qed.

Remark rem_9075 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9073 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9074 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9076 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9075 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9077 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9076 X1 X2 X3 X4).
Qed.

Remark rem_9078 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9077 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9079 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X3 X4 X2) -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9078 X1 X2 X3 X4).
Qed.

Remark rem_9080 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 (noncea_old X3 X4 X2) (cons X1 (cons X4 nil)) H);  intros.
  apply (rem_9065 X1 X2 X3 X4);  tauto.
  apply (rem_9072 X1 X2 X3 X4);  tauto.
  apply (rem_9079 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9081 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q3 pub -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9080 X1 X2 X3 X4).
Qed.

Remark rem_9082 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q3 pub -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9081 X1 X2 X3 X4).
Qed.

Remark rem_9083 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9084 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9085 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9083 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9084 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9086 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9085 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9087 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9086 X1 X2 X3 X4).
Qed.

Remark rem_9088 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9089 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9090 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9088 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9089 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9091 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9090 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9092 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9091 X1 X2 X3 X4).
Qed.

Remark rem_9093 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9094 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9095 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9093 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9094 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9096 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9095 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9097 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9096 X1 X2 X3 X4).
Qed.

Remark rem_9098 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_9087 X1 X2 X3 X4);  tauto.
  apply (rem_9092 X1 X2 X3 X4);  tauto.
  apply (rem_9097 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9099 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9098 X1 X2 X3 X4).
Qed.

Remark rem_9100 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9101 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9102 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9100 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9101 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9103 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9102 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9104 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9103 X1 X2 X3 X4).
Qed.

Remark rem_9105 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9104 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9106 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X3 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9105 X1 X2 X3 X4).
Qed.

Remark rem_9107 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9108 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9109 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9107 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9108 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9110 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9109 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9111 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9110 X1 X2 X3 X4).
Qed.

Remark rem_9112 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9111 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9113 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9112 X1 X2 X3 X4).
Qed.

Remark rem_9114 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 (noncea_old X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_9099 X1 X2 X3 X4);  tauto.
  apply (rem_9106 X1 X2 X3 X4);  tauto.
  apply (rem_9113 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9115 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9114 X1 X2 X3 X4).
Qed.

Remark rem_9116 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 pub -> auto__q2 X3 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9115 X1 X2 X3 X4).
Qed.

Remark rem_9117 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9118 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9119 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9117 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9118 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9120 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9119 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9121 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9120 X1 X2 X3 X4).
Qed.

Remark rem_9122 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_old X3 X4 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9123 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9124 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_old X3 X4 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9122 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9123 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9125 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9124 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9126 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9125 X1 X2 X3 X4).
Qed.

Remark rem_9127 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9128 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9129 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9127 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9128 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9130 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9129 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9131 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X4 nil) -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9130 X1 X2 X3 X4).
Qed.

Remark rem_9132 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X4 nil) H);  intros.
  apply (rem_9121 X1 X2 X3 X4);  tauto.
  apply (rem_9126 X1 X2 X3 X4);  tauto.
  apply (rem_9131 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9133 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X3 X4 X2) -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9132 X1 X2 X3 X4).
Qed.

Remark rem_9134 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9135 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9136 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9134 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9135 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9137 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9136 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9138 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9137 X1 X2 X3 X4).
Qed.

Remark rem_9139 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X4 nil) H);  intros.
  apply (rem_9138 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9140 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X3 X4 X2) -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q2 X4 -> auto__q2 (noncea_old X3 X4 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9139 X1 X2 X3 X4).
Qed.

Remark rem_9141 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (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_1057 X1).
Qed.

Remark rem_9142 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (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_1047 X2).
Qed.

Remark rem_9143 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9141 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9142 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9144 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9143 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9145 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X4 nil) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9144 X1 X2 X3 X4).
Qed.

Remark rem_9146 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X4 nil) H);  intros.
  apply (rem_9145 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9147 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X3 X4 X2) -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X4 nil)) -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9146 X1 X2 X3 X4).
Qed.

Remark rem_9148 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 (noncea_old X3 X4 X2) (cons X1 (cons X4 nil)) H);  intros.
  apply (rem_9133 X1 X2 X3 X4);  tauto.
  apply (rem_9140 X1 X2 X3 X4);  tauto.
  apply (rem_9147 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9149 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X4 -> auto__q2 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9148 X1 X2 X3 X4).
Qed.

Remark rem_9150 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 X4 -> auto__q2 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9149 X1 X2 X3 X4).
Qed.

Remark rem_9151 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q2 X4 -> auto__q2 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_9082 X1 X2 X3 X4);  tauto.
  apply (rem_9116 X1 X2 X3 X4);  tauto.
  apply (rem_9150 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9152 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q2 X4 -> auto__q2 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9151 X1 X2 X3 X4).
Qed.

Remark rem_9153 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9154 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9153 X1 X2 X3 X4).
Qed.

Remark rem_9155 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9156 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9155 X1 X2 X3 X4).
Qed.

Remark rem_9157 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9158 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9157 X1 X2 X3 X4).
Qed.

Remark rem_9159 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (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_1045 X1).
Qed.

Remark rem_9160 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (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_1047 X2).
Qed.

Remark rem_9161 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 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_9159 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9160 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_9162 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_9161 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_9163 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9162 X1 X2 X3).
Qed.

Remark rem_9164 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 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_1045 X1).
Qed.

Remark rem_9165 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 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_1047 X2).
Qed.

Remark rem_9166 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 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_9164 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9165 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_9167 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_9166 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_9168 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto__q2 X1 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9167 X1 X2 X3).
Qed.

Remark rem_9169 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 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_1057 X1).
Qed.

Remark rem_9170 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 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_1047 X2).
Qed.

Remark rem_9171 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_9169 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9170 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_9172 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_9171 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_9173 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9172 X1 X2 X3).
Qed.

Remark rem_9174 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_9163 X1 X2 X3);  tauto.
  apply (rem_9168 X1 X2 X3);  tauto.
  apply (rem_9173 X1 X2 X3);  tauto.
Qed.

Remark rem_9175 : forall X1 X2 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9174 X1 X2 X3).
Qed.

Remark rem_9176 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9175 X1 X2 X4).
Qed.

Remark rem_9177 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9176 X1 X2 X3 X4).
Qed.

Remark rem_9178 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9179 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9178 X1 X2 X3 X4).
Qed.

Remark rem_9180 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9181 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9180 X1 X2 X3 X4).
Qed.

Remark rem_9182 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9183 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9182 X1 X2 X3 X4).
Qed.

Remark rem_9184 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9185 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9184 X1 X2 X3 X4).
Qed.

Remark rem_9186 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9187 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9186 X1 X2 X3 X4).
Qed.

Remark rem_9188 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9189 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9188 X1 X2 X3 X4).
Qed.

Remark rem_9190 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9191 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9190 X1 X2 X3 X4).
Qed.

Remark rem_9192 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9174 X1 X2 X3).
Qed.

Remark rem_9193 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9192 X1 X2 X3 X4).
Qed.

Remark rem_9194 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_9195 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9194 X1 X2 X3 X4).
Qed.

Remark rem_9196 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9175 X1 X2 X4).
Qed.

Remark rem_9197 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9196 X1 X2 X3 X4).
Qed.

Remark rem_9198 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9199 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9198 X1 X2 X3 X4).
Qed.

Remark rem_9200 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_9201 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9200 X1 X2 X3 X4).
Qed.

Remark rem_9202 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9203 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9202 X1 X2 X3 X4).
Qed.

Remark rem_9204 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9205 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9204 X1 X2 X3 X4).
Qed.

Remark rem_9206 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9207 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9206 X1 X2 X3 X4).
Qed.

Remark rem_9208 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9209 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9208 X1 X2 X3 X4).
Qed.

Remark rem_9210 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_9211 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9210 X1 X2 X3 X4).
Qed.

Remark rem_9212 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9213 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9212 X1 X2 X3 X4).
Qed.

Remark rem_9214 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_9215 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9214 X1 X2 X3 X4).
Qed.

Remark rem_9216 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9217 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9216 X1 X2 X3 X4).
Qed.

Remark rem_9218 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_651 X3 X4 X2 H);  intros.
  apply (rem_9154 X1 X2 X3 X4);  tauto.
  apply (rem_9156 X1 X2 X3 X4);  tauto.
  apply (rem_9158 X1 X2 X3 X4);  tauto.
  apply (rem_9177 X1 X2 X3 X4);  tauto.
  apply (rem_9179 X1 X2 X3 X4);  tauto.
  apply (rem_9181 X1 X2 X3 X4);  tauto.
  apply (rem_9183 X1 X2 X3 X4);  tauto.
  apply (rem_9185 X1 X2 X3 X4);  tauto.
  apply (rem_9187 X1 X2 X3 X4);  tauto.
  apply (rem_9189 X1 X2 X3 X4);  tauto.
  apply (rem_9191 X1 X2 X3 X4);  tauto.
  apply (rem_9193 X1 X2 X3 X4);  tauto.
  apply (rem_9195 X1 X2 X3 X4);  tauto.
  apply (rem_9197 X1 X2 X3 X4);  tauto.
  apply (rem_9199 X1 X2 X3 X4);  tauto.
  apply (rem_9201 X1 X2 X3 X4);  tauto.
  apply (rem_9203 X1 X2 X3 X4);  tauto.
  apply (rem_9205 X1 X2 X3 X4);  tauto.
  apply (rem_9207 X1 X2 X3 X4);  tauto.
  apply (rem_9209 X1 X2 X3 X4);  tauto.
  apply (rem_9211 X1 X2 X3 X4);  tauto.
  apply (rem_9213 X1 X2 X3 X4);  tauto.
  apply (rem_9215 X1 X2 X3 X4);  tauto.
  apply (rem_9217 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9219 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X3 X4 X2) -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9218 X1 X2 X3 X4).
Qed.

Remark rem_9220 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q2 X4 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 (noncea_old X3 X4 X2) (cons X1 (cons X4 nil)) H);  intros.
  apply (rem_9219 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9221 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 (key pub X4) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q2 X4 -> auto__q3 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9220 X1 X2 X3 X4).
Qed.

Remark rem_9222 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9223 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9222 X1 X2 X3 X4).
Qed.

Remark rem_9224 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9225 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9224 X1 X2 X3 X4).
Qed.

Remark rem_9226 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9227 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9226 X1 X2 X3 X4).
Qed.

Remark rem_9228 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9175 X1 X2 X4).
Qed.

Remark rem_9229 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9228 X1 X2 X3 X4).
Qed.

Remark rem_9230 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9231 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9230 X1 X2 X3 X4).
Qed.

Remark rem_9232 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9233 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9232 X1 X2 X3 X4).
Qed.

Remark rem_9234 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9235 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9234 X1 X2 X3 X4).
Qed.

Remark rem_9236 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9237 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9236 X1 X2 X3 X4).
Qed.

Remark rem_9238 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9239 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9238 X1 X2 X3 X4).
Qed.

Remark rem_9240 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9241 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9240 X1 X2 X3 X4).
Qed.

Remark rem_9242 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9243 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9242 X1 X2 X3 X4).
Qed.

Remark rem_9244 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9174 X1 X2 X3).
Qed.

Remark rem_9245 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9244 X1 X2 X3 X4).
Qed.

Remark rem_9246 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_9247 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9246 X1 X2 X3 X4).
Qed.

Remark rem_9248 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9175 X1 X2 X4).
Qed.

Remark rem_9249 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9248 X1 X2 X3 X4).
Qed.

Remark rem_9250 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9251 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9250 X1 X2 X3 X4).
Qed.

Remark rem_9252 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_9253 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9252 X1 X2 X3 X4).
Qed.

Remark rem_9254 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9255 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9254 X1 X2 X3 X4).
Qed.

Remark rem_9256 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9257 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9256 X1 X2 X3 X4).
Qed.

Remark rem_9258 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9259 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9258 X1 X2 X3 X4).
Qed.

Remark rem_9260 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9261 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9260 X1 X2 X3 X4).
Qed.

Remark rem_9262 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_9263 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9262 X1 X2 X3 X4).
Qed.

Remark rem_9264 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9265 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9264 X1 X2 X3 X4).
Qed.

Remark rem_9266 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_9267 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9266 X1 X2 X3 X4).
Qed.

Remark rem_9268 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9269 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9268 X1 X2 X3 X4).
Qed.

Remark rem_9270 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_651 X3 X4 X2 H);  intros.
  apply (rem_9223 X1 X2 X3 X4);  tauto.
  apply (rem_9225 X1 X2 X3 X4);  tauto.
  apply (rem_9227 X1 X2 X3 X4);  tauto.
  apply (rem_9229 X1 X2 X3 X4);  tauto.
  apply (rem_9231 X1 X2 X3 X4);  tauto.
  apply (rem_9233 X1 X2 X3 X4);  tauto.
  apply (rem_9235 X1 X2 X3 X4);  tauto.
  apply (rem_9237 X1 X2 X3 X4);  tauto.
  apply (rem_9239 X1 X2 X3 X4);  tauto.
  apply (rem_9241 X1 X2 X3 X4);  tauto.
  apply (rem_9243 X1 X2 X3 X4);  tauto.
  apply (rem_9245 X1 X2 X3 X4);  tauto.
  apply (rem_9247 X1 X2 X3 X4);  tauto.
  apply (rem_9249 X1 X2 X3 X4);  tauto.
  apply (rem_9251 X1 X2 X3 X4);  tauto.
  apply (rem_9253 X1 X2 X3 X4);  tauto.
  apply (rem_9255 X1 X2 X3 X4);  tauto.
  apply (rem_9257 X1 X2 X3 X4);  tauto.
  apply (rem_9259 X1 X2 X3 X4);  tauto.
  apply (rem_9261 X1 X2 X3 X4);  tauto.
  apply (rem_9263 X1 X2 X3 X4);  tauto.
  apply (rem_9265 X1 X2 X3 X4);  tauto.
  apply (rem_9267 X1 X2 X3 X4);  tauto.
  apply (rem_9269 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9271 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X3 X4 X2) -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9270 X1 X2 X3 X4).
Qed.

Remark rem_9272 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q2 X4 -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 (noncea_old X3 X4 X2) (cons X1 (cons X4 nil)) H);  intros.
  apply (rem_9271 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9273 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q2 X4 -> auto__q2 (key pub X3) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9272 X1 X2 X3 X4).
Qed.

Remark rem_9274 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9275 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9274 X1 X2 X3 X4).
Qed.

Remark rem_9276 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9277 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9276 X1 X2 X3 X4).
Qed.

Remark rem_9278 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9279 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9278 X1 X2 X3 X4).
Qed.

Remark rem_9280 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9175 X1 X2 X4).
Qed.

Remark rem_9281 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9280 X1 X2 X3 X4).
Qed.

Remark rem_9282 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_9283 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9282 X1 X2 X3 X4).
Qed.

Remark rem_9284 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9285 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9284 X1 X2 X3 X4).
Qed.

Remark rem_9286 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9287 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9286 X1 X2 X3 X4).
Qed.

Remark rem_9288 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9289 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9288 X1 X2 X3 X4).
Qed.

Remark rem_9290 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9291 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9290 X1 X2 X3 X4).
Qed.

Remark rem_9292 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9293 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9292 X1 X2 X3 X4).
Qed.

Remark rem_9294 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9295 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9294 X1 X2 X3 X4).
Qed.

Remark rem_9296 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_9297 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9296 X1 X2 X3 X4).
Qed.

Remark rem_9298 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9299 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9298 X1 X2 X3 X4).
Qed.

Remark rem_9300 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9301 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9300 X1 X2 X3 X4).
Qed.

Remark rem_9302 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9303 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9302 X1 X2 X3 X4).
Qed.

Remark rem_9304 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9305 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9304 X1 X2 X3 X4).
Qed.

Remark rem_9306 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9307 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9306 X1 X2 X3 X4).
Qed.

Remark rem_9308 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9309 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9308 X1 X2 X3 X4).
Qed.

Remark rem_9310 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9311 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9310 X1 X2 X3 X4).
Qed.

Remark rem_9312 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9313 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9312 X1 X2 X3 X4).
Qed.

Remark rem_9314 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9315 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9314 X1 X2 X3 X4).
Qed.

Remark rem_9316 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9317 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9316 X1 X2 X3 X4).
Qed.

Remark rem_9318 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_9319 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9318 X1 X2 X3 X4).
Qed.

Remark rem_9320 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9321 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9320 X1 X2 X3 X4).
Qed.

Remark rem_9322 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_651 X3 X4 X2 H);  intros.
  apply (rem_9275 X1 X2 X3 X4);  tauto.
  apply (rem_9277 X1 X2 X3 X4);  tauto.
  apply (rem_9279 X1 X2 X3 X4);  tauto.
  apply (rem_9281 X1 X2 X3 X4);  tauto.
  apply (rem_9283 X1 X2 X3 X4);  tauto.
  apply (rem_9285 X1 X2 X3 X4);  tauto.
  apply (rem_9287 X1 X2 X3 X4);  tauto.
  apply (rem_9289 X1 X2 X3 X4);  tauto.
  apply (rem_9291 X1 X2 X3 X4);  tauto.
  apply (rem_9293 X1 X2 X3 X4);  tauto.
  apply (rem_9295 X1 X2 X3 X4);  tauto.
  apply (rem_9297 X1 X2 X3 X4);  tauto.
  apply (rem_9299 X1 X2 X3 X4);  tauto.
  apply (rem_9301 X1 X2 X3 X4);  tauto.
  apply (rem_9303 X1 X2 X3 X4);  tauto.
  apply (rem_9305 X1 X2 X3 X4);  tauto.
  apply (rem_9307 X1 X2 X3 X4);  tauto.
  apply (rem_9309 X1 X2 X3 X4);  tauto.
  apply (rem_9311 X1 X2 X3 X4);  tauto.
  apply (rem_9313 X1 X2 X3 X4);  tauto.
  apply (rem_9315 X1 X2 X3 X4);  tauto.
  apply (rem_9317 X1 X2 X3 X4);  tauto.
  apply (rem_9319 X1 X2 X3 X4);  tauto.
  apply (rem_9321 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9323 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 pub -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9322 X1 X2 X3 X4).
Qed.

Remark rem_9324 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 pub -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9323 X1 X2 X3 X4).
Qed.

Remark rem_9325 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9326 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9325 X1 X2 X3 X4).
Qed.

Remark rem_9327 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9328 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9327 X1 X2 X3 X4).
Qed.

Remark rem_9329 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9330 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9329 X1 X2 X3 X4).
Qed.

Remark rem_9331 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9296 X1 X2 X3 X4).
Qed.

Remark rem_9332 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9333 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9332 X1 X2 X3 X4).
Qed.

Remark rem_9334 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9314 X1 X2 X3 X4).
Qed.

Remark rem_9335 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9298 X1 X2 X3 X4).
Qed.

Remark rem_9336 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9337 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9336 X1 X2 X3 X4).
Qed.

Remark rem_9338 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9339 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9338 X1 X2 X3 X4).
Qed.

Remark rem_9340 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9341 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9340 X1 X2 X3 X4).
Qed.

Remark rem_9342 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9343 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9342 X1 X2 X3 X4).
Qed.

Remark rem_9344 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9174 X1 X2 X3).
Qed.

Remark rem_9345 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9344 X1 X2 X3 X4).
Qed.

Remark rem_9346 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_9347 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9346 X1 X2 X3 X4).
Qed.

Remark rem_9348 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9349 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9348 X1 X2 X3 X4).
Qed.

Remark rem_9350 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9282 X1 X2 X3 X4).
Qed.

Remark rem_9351 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9352 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9351 X1 X2 X3 X4).
Qed.

Remark rem_9353 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9354 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9353 X1 X2 X3 X4).
Qed.

Remark rem_9355 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9356 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9355 X1 X2 X3 X4).
Qed.

Remark rem_9357 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9358 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9357 X1 X2 X3 X4).
Qed.

Remark rem_9359 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9294 X1 X2 X3 X4).
Qed.

Remark rem_9360 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_9361 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9360 X1 X2 X3 X4).
Qed.

Remark rem_9362 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9292 X1 X2 X3 X4).
Qed.

Remark rem_9363 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X3)). tauto.
Qed.

Remark rem_9364 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9363 X1 X2 X3 X4).
Qed.

Remark rem_9365 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9366 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9365 X1 X2 X3 X4).
Qed.

Remark rem_9367 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_651 X3 X4 X2 H);  intros.
  apply (rem_9326 X1 X2 X3 X4);  tauto.
  apply (rem_9328 X1 X2 X3 X4);  tauto.
  apply (rem_9330 X1 X2 X3 X4);  tauto.
  apply (rem_9331 X1 X2 X3 X4);  tauto.
  apply (rem_9333 X1 X2 X3 X4);  tauto.
  apply (rem_9334 X1 X2 X3 X4);  tauto.
  apply (rem_9335 X1 X2 X3 X4);  tauto.
  apply (rem_9337 X1 X2 X3 X4);  tauto.
  apply (rem_9339 X1 X2 X3 X4);  tauto.
  apply (rem_9341 X1 X2 X3 X4);  tauto.
  apply (rem_9343 X1 X2 X3 X4);  tauto.
  apply (rem_9345 X1 X2 X3 X4);  tauto.
  apply (rem_9347 X1 X2 X3 X4);  tauto.
  apply (rem_9349 X1 X2 X3 X4);  tauto.
  apply (rem_9350 X1 X2 X3 X4);  tauto.
  apply (rem_9352 X1 X2 X3 X4);  tauto.
  apply (rem_9354 X1 X2 X3 X4);  tauto.
  apply (rem_9356 X1 X2 X3 X4);  tauto.
  apply (rem_9358 X1 X2 X3 X4);  tauto.
  apply (rem_9359 X1 X2 X3 X4);  tauto.
  apply (rem_9361 X1 X2 X3 X4);  tauto.
  apply (rem_9362 X1 X2 X3 X4);  tauto.
  apply (rem_9364 X1 X2 X3 X4);  tauto.
  apply (rem_9366 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9368 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q1 pub -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9367 X1 X2 X3 X4).
Qed.

Remark rem_9369 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q1 pub -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9368 X1 X2 X3 X4).
Qed.

Remark rem_9370 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9371 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9370 X1 X2 X3 X4).
Qed.

Remark rem_9372 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9373 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9372 X1 X2 X3 X4).
Qed.

Remark rem_9374 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9375 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9374 X1 X2 X3 X4).
Qed.

Remark rem_9376 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9300 X1 X2 X3 X4).
Qed.

Remark rem_9377 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9365 X1 X2 X3 X4).
Qed.

Remark rem_9378 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9276 X1 X2 X3 X4).
Qed.

Remark rem_9379 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9278 X1 X2 X3 X4).
Qed.

Remark rem_9380 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9310 X1 X2 X3 X4).
Qed.

Remark rem_9381 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9382 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9381 X1 X2 X3 X4).
Qed.

Remark rem_9383 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9325 X1 X2 X3 X4).
Qed.

Remark rem_9384 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9338 X1 X2 X3 X4).
Qed.

Remark rem_9385 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9348 X1 X2 X3 X4).
Qed.

Remark rem_9386 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9329 X1 X2 X3 X4).
Qed.

Remark rem_9387 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9175 X1 X2 X4).
Qed.

Remark rem_9388 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9387 X1 X2 X3 X4).
Qed.

Remark rem_9389 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9320 X1 X2 X3 X4).
Qed.

Remark rem_9390 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_9391 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9390 X1 X2 X3 X4).
Qed.

Remark rem_9392 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9393 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9392 X1 X2 X3 X4).
Qed.

Remark rem_9394 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9306 X1 X2 X3 X4).
Qed.

Remark rem_9395 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9396 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9395 X1 X2 X3 X4).
Qed.

Remark rem_9397 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9290 X1 X2 X3 X4).
Qed.

Remark rem_9398 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9327 X1 X2 X3 X4).
Qed.

Remark rem_9399 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9274 X1 X2 X3 X4).
Qed.

Remark rem_9400 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9304 X1 X2 X3 X4).
Qed.

Remark rem_9401 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9402 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9401 X1 X2 X3 X4).
Qed.

Remark rem_9403 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_651 X3 X4 X2 H);  intros.
  apply (rem_9371 X1 X2 X3 X4);  tauto.
  apply (rem_9373 X1 X2 X3 X4);  tauto.
  apply (rem_9375 X1 X2 X3 X4);  tauto.
  apply (rem_9376 X1 X2 X3 X4);  tauto.
  apply (rem_9377 X1 X2 X3 X4);  tauto.
  apply (rem_9378 X1 X2 X3 X4);  tauto.
  apply (rem_9379 X1 X2 X3 X4);  tauto.
  apply (rem_9380 X1 X2 X3 X4);  tauto.
  apply (rem_9382 X1 X2 X3 X4);  tauto.
  apply (rem_9383 X1 X2 X3 X4);  tauto.
  apply (rem_9384 X1 X2 X3 X4);  tauto.
  apply (rem_9385 X1 X2 X3 X4);  tauto.
  apply (rem_9386 X1 X2 X3 X4);  tauto.
  apply (rem_9388 X1 X2 X3 X4);  tauto.
  apply (rem_9389 X1 X2 X3 X4);  tauto.
  apply (rem_9391 X1 X2 X3 X4);  tauto.
  apply (rem_9393 X1 X2 X3 X4);  tauto.
  apply (rem_9394 X1 X2 X3 X4);  tauto.
  apply (rem_9396 X1 X2 X3 X4);  tauto.
  apply (rem_9397 X1 X2 X3 X4);  tauto.
  apply (rem_9398 X1 X2 X3 X4);  tauto.
  apply (rem_9399 X1 X2 X3 X4);  tauto.
  apply (rem_9400 X1 X2 X3 X4);  tauto.
  apply (rem_9402 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9404 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q1 pub -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9403 X1 X2 X3 X4).
Qed.

Remark rem_9405 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X3 X4 X2) -> auto__q1 pub -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9404 X1 X2 X3 X4).
Qed.

Remark rem_9406 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_703 pub X3 H);  intros.
  apply (rem_9324 X1 X2 X3 X4);  tauto.
  apply (rem_9369 X1 X2 X3 X4);  tauto.
  apply (rem_9405 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9407 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X3 X4 X2) -> auto__q2 (cons X1 (cons X4 nil)) -> auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 (key pub X3) -> auto__q1 (noncea_old X3 X4 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X4 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9406 X1 X2 X3 X4).
Qed.

Remark rem_9408 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q1 (key pub X3) -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_689 (noncea_old X3 X4 X2) (cons X1 (cons X4 nil)) H);  intros.
  apply (rem_9407 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9409 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q1 (cons (noncea_old X3 X4 X2) (cons X1 (cons X4 nil))) -> auto__q1 (key pub X3) -> auto__q2 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9408 X1 X2 X3 X4).
Qed.

Remark rem_9410 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_5580 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4) H);  intros.
  apply (rem_8725 X1 X2 X3 X4);  tauto.
  apply (rem_9048 X1 X2 X3 X4);  tauto.
  apply (rem_9152 X1 X2 X3 X4);  tauto.
  apply (rem_9221 X1 X2 X3 X4);  tauto.
  apply (rem_9273 X1 X2 X3 X4);  tauto.
  apply (rem_9409 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9411 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 nil -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9410 X1 X2 X3 X4).
Qed.

Remark rem_9412 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 nil -> auto__q1 X2 -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 nil -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9411 X1 X2 X3 X4).
Qed.

Remark rem_9413 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 nil -> auto__q2 X3 -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9410 X1 X2 X3 X4).
Qed.

Remark rem_9414 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 nil -> auto__q1 X2 -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 nil -> auto__q2 X3 -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9413 X1 X2 X3 X4).
Qed.

Remark rem_9415 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9416 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9417 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9415 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9416 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9418 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9417 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9419 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9418 X1 X2 X3 X4).
Qed.

Remark rem_9420 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9421 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9422 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9420 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9421 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9423 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9422 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9424 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9423 X1 X2 X3 X4).
Qed.

Remark rem_9425 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9426 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9427 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9425 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9426 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9428 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9427 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9429 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9428 X1 X2 X3 X4).
Qed.

Remark rem_9430 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_9419 X1 X2 X3 X4);  tauto.
  apply (rem_9424 X1 X2 X3 X4);  tauto.
  apply (rem_9429 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9431 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9430 X1 X2 X3 X4).
Qed.

Remark rem_9432 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9433 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9434 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9432 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9433 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9435 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9434 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9436 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9435 X1 X2 X3 X4).
Qed.

Remark rem_9437 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9436 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9438 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9437 X1 X2 X3 X4).
Qed.

Remark rem_9439 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9440 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9441 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9439 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9440 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9442 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9441 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9443 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9442 X1 X2 X3 X4).
Qed.

Remark rem_9444 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9443 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9445 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9444 X1 X2 X3 X4).
Qed.

Remark rem_9446 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 (noncea_old X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_9431 X1 X2 X3 X4);  tauto.
  apply (rem_9438 X1 X2 X3 X4);  tauto.
  apply (rem_9445 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9447 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9446 X1 X2 X3 X4).
Qed.

Remark rem_9448 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_9449 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9450 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_9448 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9449 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9451 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9450 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9452 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9451 X1 X2 X3 X4).
Qed.

Remark rem_9453 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_9454 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9455 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_9453 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9454 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9456 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9455 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9457 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9456 X1 X2 X3 X4).
Qed.

Remark rem_9458 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9459 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9460 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9458 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9459 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9461 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9460 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9462 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9461 X1 X2 X3 X4).
Qed.

Remark rem_9463 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_9464 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9465 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_9463 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9464 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9466 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9465 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9467 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9466 X1 X2 X3 X4).
Qed.

Remark rem_9468 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9469 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9470 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9468 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9469 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9471 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9470 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9472 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9471 X1 X2 X3 X4).
Qed.

Remark rem_9473 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X3 nil) H);  intros.
  apply (rem_9452 X1 X2 X3 X4);  tauto.
  apply (rem_9457 X1 X2 X3 X4);  tauto.
  apply (rem_9462 X1 X2 X3 X4);  tauto.
  apply (rem_9467 X1 X2 X3 X4);  tauto.
  apply (rem_9472 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9474 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9473 X1 X2 X3 X4).
Qed.

Remark rem_9475 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9476 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9477 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9475 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9476 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9478 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9477 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9479 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9478 X1 X2 X3 X4).
Qed.

Remark rem_9480 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9479 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9481 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9480 X1 X2 X3 X4).
Qed.

Remark rem_9482 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9483 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9482 X1 X2 X3 X4).
Qed.

Remark rem_9484 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9485 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9484 X1 X2 X3 X4).
Qed.

Remark rem_9486 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9487 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9486 X1 X2 X3 X4).
Qed.

Remark rem_9488 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_25 X4 X3 X2 H);  intros.
  apply (rem_9483 X1 X2 X3 X4);  tauto.
  apply (rem_9485 X1 X2 X3 X4);  tauto.
  apply (rem_9487 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9489 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9488 X1 X2 X3 X4).
Qed.

Remark rem_9490 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9491 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9492 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9490 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9491 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9493 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9492 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9494 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9493 X1 X2 X3 X4).
Qed.

Remark rem_9495 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9496 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9497 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9495 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9496 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9498 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9497 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9499 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9498 X1 X2 X3 X4).
Qed.

Remark rem_9500 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9501 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9502 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9500 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9501 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9503 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9502 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9504 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9503 X1 X2 X3 X4).
Qed.

Remark rem_9505 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_9494 X1 X2 X3 X4);  tauto.
  apply (rem_9499 X1 X2 X3 X4);  tauto.
  apply (rem_9504 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9506 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9505 X1 X2 X3 X4).
Qed.

Remark rem_9507 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9508 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9507 X1 X2 X3 X4).
Qed.

Remark rem_9509 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9510 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9509 X1 X2 X3 X4).
Qed.

Remark rem_9511 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9512 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9511 X1 X2 X3 X4).
Qed.

Remark rem_9513 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9514 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9513 X1 X2 X3 X4).
Qed.

Remark rem_9515 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9516 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9515 X1 X2 X3 X4).
Qed.

Remark rem_9517 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9518 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9517 X1 X2 X3 X4).
Qed.

Remark rem_9519 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9520 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9519 X1 X2 X3 X4).
Qed.

Remark rem_9521 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9522 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9521 X1 X2 X3 X4).
Qed.

Remark rem_9523 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9524 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9523 X1 X2 X3 X4).
Qed.

Remark rem_9525 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9526 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9525 X1 X2 X3 X4).
Qed.

Remark rem_9527 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9528 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9527 X1 X2 X3 X4).
Qed.

Remark rem_9529 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9530 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9529 X1 X2 X3 X4).
Qed.

Remark rem_9531 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9532 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9531 X1 X2 X3 X4).
Qed.

Remark rem_9533 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9534 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9533 X1 X2 X3 X4).
Qed.

Remark rem_9535 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9536 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9535 X1 X2 X3 X4).
Qed.

Remark rem_9537 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9538 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9537 X1 X2 X3 X4).
Qed.

Remark rem_9539 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9540 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9539 X1 X2 X3 X4).
Qed.

Remark rem_9541 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_9542 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9541 X1 X2 X3 X4).
Qed.

Remark rem_9543 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9544 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9543 X1 X2 X3 X4).
Qed.

Remark rem_9545 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1672 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_9546 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9545 X1 X2 X3).
Qed.

Remark rem_9547 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1677 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_9548 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9547 X1 X2 X3).
Qed.

Remark rem_9549 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1682 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_9550 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9549 X1 X2 X3).
Qed.

Remark rem_9551 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1687 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_9552 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9551 X1 X2 X3).
Qed.

Remark rem_9553 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1692 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_9554 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9553 X1 X2 X3).
Qed.

Remark rem_9555 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1107 X1 (cons X3 nil) H);  intros.
  apply (rem_9546 X1 X2 X3);  tauto.
  apply (rem_9548 X1 X2 X3);  tauto.
  apply (rem_9550 X1 X2 X3);  tauto.
  apply (rem_9552 X1 X2 X3);  tauto.
  apply (rem_9554 X1 X2 X3);  tauto.
Qed.

Remark rem_9556 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9555 X1 X2 X3).
Qed.

Remark rem_9557 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9556 X1 X2 X3 X4).
Qed.

Remark rem_9558 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9559 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9558 X1 X2 X3 X4).
Qed.

Remark rem_9560 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9561 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9560 X1 X2 X3 X4).
Qed.

Remark rem_9562 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9563 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9562 X1 X2 X3 X4).
Qed.

Remark rem_9564 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9565 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9564 X1 X2 X3 X4).
Qed.

Remark rem_9566 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_651 X4 X3 X2 H);  intros.
  apply (rem_9508 X1 X2 X3 X4);  tauto.
  apply (rem_9510 X1 X2 X3 X4);  tauto.
  apply (rem_9512 X1 X2 X3 X4);  tauto.
  apply (rem_9514 X1 X2 X3 X4);  tauto.
  apply (rem_9516 X1 X2 X3 X4);  tauto.
  apply (rem_9518 X1 X2 X3 X4);  tauto.
  apply (rem_9520 X1 X2 X3 X4);  tauto.
  apply (rem_9522 X1 X2 X3 X4);  tauto.
  apply (rem_9524 X1 X2 X3 X4);  tauto.
  apply (rem_9526 X1 X2 X3 X4);  tauto.
  apply (rem_9528 X1 X2 X3 X4);  tauto.
  apply (rem_9530 X1 X2 X3 X4);  tauto.
  apply (rem_9532 X1 X2 X3 X4);  tauto.
  apply (rem_9534 X1 X2 X3 X4);  tauto.
  apply (rem_9536 X1 X2 X3 X4);  tauto.
  apply (rem_9538 X1 X2 X3 X4);  tauto.
  apply (rem_9540 X1 X2 X3 X4);  tauto.
  apply (rem_9542 X1 X2 X3 X4);  tauto.
  apply (rem_9544 X1 X2 X3 X4);  tauto.
  apply (rem_9557 X1 X2 X3 X4);  tauto.
  apply (rem_9559 X1 X2 X3 X4);  tauto.
  apply (rem_9561 X1 X2 X3 X4);  tauto.
  apply (rem_9563 X1 X2 X3 X4);  tauto.
  apply (rem_9565 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9567 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9566 X1 X2 X3 X4).
Qed.

Remark rem_9568 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 (noncea_old X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_9474 X1 X2 X3 X4);  tauto.
  apply (rem_9481 X1 X2 X3 X4);  tauto.
  apply (rem_9489 X1 X2 X3 X4);  tauto.
  apply (rem_9506 X1 X2 X3 X4);  tauto.
  apply (rem_9567 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9569 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 pub -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9568 X1 X2 X3 X4).
Qed.

Remark rem_9570 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 pub -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9569 X1 X2 X3 X4).
Qed.

Remark rem_9571 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_9572 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9573 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_9571 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9572 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9574 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9573 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9575 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9574 X1 X2 X3 X4).
Qed.

Remark rem_9576 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_9577 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9578 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_9576 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9577 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9579 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9578 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9580 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9579 X1 X2 X3 X4).
Qed.

Remark rem_9581 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9582 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9583 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9581 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9582 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9584 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9583 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9585 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9584 X1 X2 X3 X4).
Qed.

Remark rem_9586 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_9587 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9588 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_9586 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9587 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9589 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9588 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9590 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9589 X1 X2 X3 X4).
Qed.

Remark rem_9591 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9592 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9593 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9591 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9592 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9594 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9593 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9595 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 X4 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9594 X1 X2 X3 X4).
Qed.

Remark rem_9596 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X3 nil) H);  intros.
  apply (rem_9575 X1 X2 X3 X4);  tauto.
  apply (rem_9580 X1 X2 X3 X4);  tauto.
  apply (rem_9585 X1 X2 X3 X4);  tauto.
  apply (rem_9590 X1 X2 X3 X4);  tauto.
  apply (rem_9595 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9597 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9596 X1 X2 X3 X4).
Qed.

Remark rem_9598 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9599 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9600 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9598 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9599 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9601 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9600 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9602 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9601 X1 X2 X3 X4).
Qed.

Remark rem_9603 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9602 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9604 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9603 X1 X2 X3 X4).
Qed.

Remark rem_9605 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_9606 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9605 X1 X2 X3 X4).
Qed.

Remark rem_9607 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9608 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9607 X1 X2 X3 X4).
Qed.

Remark rem_9609 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8884 X1 X2 X3 X4).
Qed.

Remark rem_9610 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_25 X4 X3 X2 H);  intros.
  apply (rem_9606 X1 X2 X3 X4);  tauto.
  apply (rem_9608 X1 X2 X3 X4);  tauto.
  apply (rem_9609 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9611 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9610 X1 X2 X3 X4).
Qed.

Remark rem_9612 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9613 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9614 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9612 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9613 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9615 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9614 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9616 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9615 X1 X2 X3 X4).
Qed.

Remark rem_9617 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9618 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9619 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9617 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9618 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9620 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9619 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9621 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9620 X1 X2 X3 X4).
Qed.

Remark rem_9622 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9623 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9624 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9622 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9623 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9625 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9624 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9626 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9625 X1 X2 X3 X4).
Qed.

Remark rem_9627 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_9616 X1 X2 X3 X4);  tauto.
  apply (rem_9621 X1 X2 X3 X4);  tauto.
  apply (rem_9626 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9628 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9627 X1 X2 X3 X4).
Qed.

Remark rem_9629 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_9630 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9629 X1 X2 X3 X4).
Qed.

Remark rem_9631 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_9632 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9631 X1 X2 X3 X4).
Qed.

Remark rem_9633 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_9634 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9633 X1 X2 X3 X4).
Qed.

Remark rem_9635 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9529 X1 X2 X3 X4).
Qed.

Remark rem_9636 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8923 X1 X2 X3 X4).
Qed.

Remark rem_9637 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9558 X1 X2 X3 X4).
Qed.

Remark rem_9638 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9531 X1 X2 X3 X4).
Qed.

Remark rem_9639 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9484 X1 X2 X3 X4).
Qed.

Remark rem_9640 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_9641 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9640 X1 X2 X3 X4).
Qed.

Remark rem_9642 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9643 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9642 X1 X2 X3 X4).
Qed.

Remark rem_9644 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9555 X1 X2 X3).
Qed.

Remark rem_9645 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9644 X1 X2 X3 X4).
Qed.

Remark rem_9646 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8925 X1 X2 X3 X4).
Qed.

Remark rem_9647 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9648 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9647 X1 X2 X3 X4).
Qed.

Remark rem_9649 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_9650 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9649 X1 X2 X3 X4).
Qed.

Remark rem_9651 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9515 X1 X2 X3 X4).
Qed.

Remark rem_9652 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_9653 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9652 X1 X2 X3 X4).
Qed.

Remark rem_9654 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_9655 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9654 X1 X2 X3 X4).
Qed.

Remark rem_9656 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9482 X1 X2 X3 X4).
Qed.

Remark rem_9657 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_9658 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9657 X1 X2 X3 X4).
Qed.

Remark rem_9659 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9527 X1 X2 X3 X4).
Qed.

Remark rem_9660 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9661 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9660 X1 X2 X3 X4).
Qed.

Remark rem_9662 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9525 X1 X2 X3 X4).
Qed.

Remark rem_9663 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9486 X1 X2 X3 X4).
Qed.

Remark rem_9664 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_9665 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9664 X1 X2 X3 X4).
Qed.

Remark rem_9666 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_651 X4 X3 X2 H);  intros.
  apply (rem_9630 X1 X2 X3 X4);  tauto.
  apply (rem_9632 X1 X2 X3 X4);  tauto.
  apply (rem_9634 X1 X2 X3 X4);  tauto.
  apply (rem_9635 X1 X2 X3 X4);  tauto.
  apply (rem_9636 X1 X2 X3 X4);  tauto.
  apply (rem_9637 X1 X2 X3 X4);  tauto.
  apply (rem_9638 X1 X2 X3 X4);  tauto.
  apply (rem_9639 X1 X2 X3 X4);  tauto.
  apply (rem_9641 X1 X2 X3 X4);  tauto.
  apply (rem_9643 X1 X2 X3 X4);  tauto.
  apply (rem_9645 X1 X2 X3 X4);  tauto.
  apply (rem_9646 X1 X2 X3 X4);  tauto.
  apply (rem_9648 X1 X2 X3 X4);  tauto.
  apply (rem_9650 X1 X2 X3 X4);  tauto.
  apply (rem_9651 X1 X2 X3 X4);  tauto.
  apply (rem_9653 X1 X2 X3 X4);  tauto.
  apply (rem_9655 X1 X2 X3 X4);  tauto.
  apply (rem_9656 X1 X2 X3 X4);  tauto.
  apply (rem_9658 X1 X2 X3 X4);  tauto.
  apply (rem_9659 X1 X2 X3 X4);  tauto.
  apply (rem_9661 X1 X2 X3 X4);  tauto.
  apply (rem_9662 X1 X2 X3 X4);  tauto.
  apply (rem_9663 X1 X2 X3 X4);  tauto.
  apply (rem_9665 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9667 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9666 X1 X2 X3 X4).
Qed.

Remark rem_9668 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 (noncea_old X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_9597 X1 X2 X3 X4);  tauto.
  apply (rem_9604 X1 X2 X3 X4);  tauto.
  apply (rem_9611 X1 X2 X3 X4);  tauto.
  apply (rem_9628 X1 X2 X3 X4);  tauto.
  apply (rem_9667 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9669 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 X4 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9668 X1 X2 X3 X4).
Qed.

Remark rem_9670 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 X4 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9669 X1 X2 X3 X4).
Qed.

Remark rem_9671 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_9672 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9673 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_9671 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9672 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9674 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9673 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9675 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9674 X1 X2 X3 X4).
Qed.

Remark rem_9676 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_9677 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9678 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_9676 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9677 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9679 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9678 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9680 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9679 X1 X2 X3 X4).
Qed.

Remark rem_9681 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9682 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9683 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9681 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9682 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9684 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9683 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9685 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9684 X1 X2 X3 X4).
Qed.

Remark rem_9686 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1081 X1).
Qed.

Remark rem_9687 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9688 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q3 X1). 2:apply (rem_9686 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9687 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9689 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9688 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9690 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9689 X1 X2 X3 X4).
Qed.

Remark rem_9691 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9692 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9693 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9691 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9692 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9694 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9693 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9695 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9694 X1 X2 X3 X4).
Qed.

Remark rem_9696 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 X1 (cons X3 nil) H);  intros.
  apply (rem_9675 X1 X2 X3 X4);  tauto.
  apply (rem_9680 X1 X2 X3 X4);  tauto.
  apply (rem_9685 X1 X2 X3 X4);  tauto.
  apply (rem_9690 X1 X2 X3 X4);  tauto.
  apply (rem_9695 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9697 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9696 X1 X2 X3 X4).
Qed.

Remark rem_9698 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9699 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9700 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9698 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9699 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9701 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9700 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9702 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9701 X1 X2 X3 X4).
Qed.

Remark rem_9703 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9702 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9704 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9703 X1 X2 X3 X4).
Qed.

Remark rem_9705 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9654 X1 X2 X3 X4).
Qed.

Remark rem_9706 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9657 X1 X2 X3 X4).
Qed.

Remark rem_9707 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9652 X1 X2 X3 X4).
Qed.

Remark rem_9708 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_25 X4 X3 X2 H);  intros.
  apply (rem_9705 X1 X2 X3 X4);  tauto.
  apply (rem_9706 X1 X2 X3 X4);  tauto.
  apply (rem_9707 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9709 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9708 X1 X2 X3 X4).
Qed.

Remark rem_9710 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9711 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9712 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9710 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9711 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9713 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9712 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9714 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9713 X1 X2 X3 X4).
Qed.

Remark rem_9715 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9716 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9717 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9715 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9716 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9718 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9717 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9719 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9718 X1 X2 X3 X4).
Qed.

Remark rem_9720 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9721 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9722 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9720 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9721 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9723 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9722 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9724 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9723 X1 X2 X3 X4).
Qed.

Remark rem_9725 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_9714 X1 X2 X3 X4);  tauto.
  apply (rem_9719 X1 X2 X3 X4);  tauto.
  apply (rem_9724 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9726 : forall X1 X2 X3 X4:term, auto__q3 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9725 X1 X2 X3 X4).
Qed.

Remark rem_9727 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9728 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9727 X1 X2 X3 X4).
Qed.

Remark rem_9729 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9730 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9729 X1 X2 X3 X4).
Qed.

Remark rem_9731 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9732 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9731 X1 X2 X3 X4).
Qed.

Remark rem_9733 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9533 X1 X2 X3 X4).
Qed.

Remark rem_9734 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9664 X1 X2 X3 X4).
Qed.

Remark rem_9735 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9509 X1 X2 X3 X4).
Qed.

Remark rem_9736 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9511 X1 X2 X3 X4).
Qed.

Remark rem_9737 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9543 X1 X2 X3 X4).
Qed.

Remark rem_9738 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9555 X1 X2 X3).
Qed.

Remark rem_9739 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9738 X1 X2 X3 X4).
Qed.

Remark rem_9740 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9629 X1 X2 X3 X4).
Qed.

Remark rem_9741 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9640 X1 X2 X3 X4).
Qed.

Remark rem_9742 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9649 X1 X2 X3 X4).
Qed.

Remark rem_9743 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9633 X1 X2 X3 X4).
Qed.

Remark rem_9744 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9745 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9744 X1 X2 X3 X4).
Qed.

Remark rem_9746 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9564 X1 X2 X3 X4).
Qed.

Remark rem_9747 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9748 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9747 X1 X2 X3 X4).
Qed.

Remark rem_9749 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_9750 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9749 X1 X2 X3 X4).
Qed.

Remark rem_9751 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9539 X1 X2 X3 X4).
Qed.

Remark rem_9752 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9753 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9752 X1 X2 X3 X4).
Qed.

Remark rem_9754 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9523 X1 X2 X3 X4).
Qed.

Remark rem_9755 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9631 X1 X2 X3 X4).
Qed.

Remark rem_9756 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9507 X1 X2 X3 X4).
Qed.

Remark rem_9757 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9537 X1 X2 X3 X4).
Qed.

Remark rem_9758 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9759 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9758 X1 X2 X3 X4).
Qed.

Remark rem_9760 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_651 X4 X3 X2 H);  intros.
  apply (rem_9728 X1 X2 X3 X4);  tauto.
  apply (rem_9730 X1 X2 X3 X4);  tauto.
  apply (rem_9732 X1 X2 X3 X4);  tauto.
  apply (rem_9733 X1 X2 X3 X4);  tauto.
  apply (rem_9734 X1 X2 X3 X4);  tauto.
  apply (rem_9735 X1 X2 X3 X4);  tauto.
  apply (rem_9736 X1 X2 X3 X4);  tauto.
  apply (rem_9737 X1 X2 X3 X4);  tauto.
  apply (rem_9739 X1 X2 X3 X4);  tauto.
  apply (rem_9740 X1 X2 X3 X4);  tauto.
  apply (rem_9741 X1 X2 X3 X4);  tauto.
  apply (rem_9742 X1 X2 X3 X4);  tauto.
  apply (rem_9743 X1 X2 X3 X4);  tauto.
  apply (rem_9745 X1 X2 X3 X4);  tauto.
  apply (rem_9746 X1 X2 X3 X4);  tauto.
  apply (rem_9748 X1 X2 X3 X4);  tauto.
  apply (rem_9750 X1 X2 X3 X4);  tauto.
  apply (rem_9751 X1 X2 X3 X4);  tauto.
  apply (rem_9753 X1 X2 X3 X4);  tauto.
  apply (rem_9754 X1 X2 X3 X4);  tauto.
  apply (rem_9755 X1 X2 X3 X4);  tauto.
  apply (rem_9756 X1 X2 X3 X4);  tauto.
  apply (rem_9757 X1 X2 X3 X4);  tauto.
  apply (rem_9759 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9761 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q3 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9760 X1 X2 X3 X4).
Qed.

Remark rem_9762 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_1107 (noncea_old X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_9697 X1 X2 X3 X4);  tauto.
  apply (rem_9704 X1 X2 X3 X4);  tauto.
  apply (rem_9709 X1 X2 X3 X4);  tauto.
  apply (rem_9726 X1 X2 X3 X4);  tauto.
  apply (rem_9761 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9763 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9762 X1 X2 X3 X4).
Qed.

Remark rem_9764 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9763 X1 X2 X3 X4).
Qed.

Remark rem_9765 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (key pub X4) -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_703 pub X4 H);  intros.
  apply (rem_9570 X1 X2 X3 X4);  tauto.
  apply (rem_9670 X1 X2 X3 X4);  tauto.
  apply (rem_9764 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9766 : forall X1 X2 X3 X4:term, auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (key pub X4) -> auto__q3 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9765 X1 X2 X3 X4).
Qed.

Remark rem_9767 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9768 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9769 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9767 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9768 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9770 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9769 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9771 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9770 X1 X2 X3 X4).
Qed.

Remark rem_9772 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9773 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9774 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9772 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9773 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9775 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9774 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9776 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9775 X1 X2 X3 X4).
Qed.

Remark rem_9777 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9778 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9779 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9777 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9778 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9780 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9779 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9781 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9780 X1 X2 X3 X4).
Qed.

Remark rem_9782 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_9771 X1 X2 X3 X4);  tauto.
  apply (rem_9776 X1 X2 X3 X4);  tauto.
  apply (rem_9781 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9783 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9782 X1 X2 X3 X4).
Qed.

Remark rem_9784 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9785 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9786 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9784 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9785 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9787 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9786 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9788 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9787 X1 X2 X3 X4).
Qed.

Remark rem_9789 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9788 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9790 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9789 X1 X2 X3 X4).
Qed.

Remark rem_9791 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9792 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9793 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9791 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9792 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9794 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9793 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9795 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X3 nil) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9794 X1 X2 X3 X4).
Qed.

Remark rem_9796 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9795 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9797 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9796 X1 X2 X3 X4).
Qed.

Remark rem_9798 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 (noncea_old X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_9783 X1 X2 X3 X4);  tauto.
  apply (rem_9790 X1 X2 X3 X4);  tauto.
  apply (rem_9797 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9799 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 pub -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9798 X1 X2 X3 X4).
Qed.

Remark rem_9800 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 pub -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9799 X1 X2 X3 X4).
Qed.

Remark rem_9801 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9802 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9803 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9801 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9802 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9804 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9803 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9805 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9804 X1 X2 X3 X4).
Qed.

Remark rem_9806 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9807 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9808 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9806 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9807 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9809 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9808 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9810 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9809 X1 X2 X3 X4).
Qed.

Remark rem_9811 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9812 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9813 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9811 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9812 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9814 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9813 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9815 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9814 X1 X2 X3 X4).
Qed.

Remark rem_9816 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_9805 X1 X2 X3 X4);  tauto.
  apply (rem_9810 X1 X2 X3 X4);  tauto.
  apply (rem_9815 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9817 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9816 X1 X2 X3 X4).
Qed.

Remark rem_9818 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9819 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9820 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9818 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9819 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9821 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9820 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9822 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9821 X1 X2 X3 X4).
Qed.

Remark rem_9823 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9822 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9824 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9823 X1 X2 X3 X4).
Qed.

Remark rem_9825 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9826 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9827 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9825 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9826 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9828 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9827 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9829 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9828 X1 X2 X3 X4).
Qed.

Remark rem_9830 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9829 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9831 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_old X4 X3 X2) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9830 X1 X2 X3 X4).
Qed.

Remark rem_9832 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_105 (noncea_old X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_9817 X1 X2 X3 X4);  tauto.
  apply (rem_9824 X1 X2 X3 X4);  tauto.
  apply (rem_9831 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9833 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9832 X1 X2 X3 X4).
Qed.

Remark rem_9834 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9833 X1 X2 X3 X4).
Qed.

Remark rem_9835 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9836 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9837 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9835 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9836 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9838 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9837 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9839 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9838 X1 X2 X3 X4).
Qed.

Remark rem_9840 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1045 X1).
Qed.

Remark rem_9841 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9842 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q2 X1). 2:apply (rem_9840 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9841 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9843 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9842 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9844 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9843 X1 X2 X3 X4).
Qed.

Remark rem_9845 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9846 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9847 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9845 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9846 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9848 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9847 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9849 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9848 X1 X2 X3 X4).
Qed.

Remark rem_9850 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_9839 X1 X2 X3 X4);  tauto.
  apply (rem_9844 X1 X2 X3 X4);  tauto.
  apply (rem_9849 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9851 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9850 X1 X2 X3 X4).
Qed.

Remark rem_9852 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9853 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9854 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9852 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9853 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9855 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9854 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9856 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9855 X1 X2 X3 X4).
Qed.

Remark rem_9857 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9856 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9858 : forall X1 X2 X3 X4:term, auto__q2 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q2 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9857 X1 X2 X3 X4).
Qed.

Remark rem_9859 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1057 X1).
Qed.

Remark rem_9860 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1047 X2).
Qed.

Remark rem_9861 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto__q1 X1). 2:apply (rem_9859 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9860 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_9862 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_9861 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_9863 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X3 nil) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9862 X1 X2 X3 X4).
Qed.

Remark rem_9864 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_689 X1 (cons X3 nil) H);  intros.
  apply (rem_9863 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9865 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X4 X3 X2) -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (cons X1 (cons X3 nil)) -> auto__q1 (noncea_old X4 X3 X2) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9864 X1 X2 X3 X4).
Qed.

Remark rem_9866 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_105 (noncea_old X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_9851 X1 X2 X3 X4);  tauto.
  apply (rem_9858 X1 X2 X3 X4);  tauto.
  apply (rem_9865 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9867 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9866 X1 X2 X3 X4).
Qed.

Remark rem_9868 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 pub -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9867 X1 X2 X3 X4).
Qed.

Remark rem_9869 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (key pub X4) -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_703 pub X4 H);  intros.
  apply (rem_9800 X1 X2 X3 X4);  tauto.
  apply (rem_9834 X1 X2 X3 X4);  tauto.
  apply (rem_9868 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9870 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (key pub X4) -> auto__q2 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9869 X1 X2 X3 X4).
Qed.

Remark rem_9871 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9872 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9871 X1 X2 X3 X4).
Qed.

Remark rem_9873 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9874 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9873 X1 X2 X3 X4).
Qed.

Remark rem_9875 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9876 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9875 X1 X2 X3 X4).
Qed.

Remark rem_9877 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9878 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9877 X1 X2 X3 X4).
Qed.

Remark rem_9879 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9188 X1 X2 X3 X4).
Qed.

Remark rem_9880 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9881 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9880 X1 X2 X3 X4).
Qed.

Remark rem_9882 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9883 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9882 X1 X2 X3 X4).
Qed.

Remark rem_9884 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9885 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9884 X1 X2 X3 X4).
Qed.

Remark rem_9886 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (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_1045 X1).
Qed.

Remark rem_9887 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (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_1047 X2).
Qed.

Remark rem_9888 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 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_9886 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9887 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_9889 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_9888 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_9890 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9889 X1 X2 X3).
Qed.

Remark rem_9891 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 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_1045 X1).
Qed.

Remark rem_9892 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 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_1047 X2).
Qed.

Remark rem_9893 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> 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_9891 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9892 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_9894 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_9893 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_9895 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9894 X1 X2 X3).
Qed.

Remark rem_9896 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (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_1057 X1).
Qed.

Remark rem_9897 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (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_1047 X2).
Qed.

Remark rem_9898 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_9896 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_9897 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_9899 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_9898 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_9900 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9899 X1 X2 X3).
Qed.

Remark rem_9901 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_105 X1 (cons X3 nil) H);  intros.
  apply (rem_9890 X1 X2 X3);  tauto.
  apply (rem_9895 X1 X2 X3);  tauto.
  apply (rem_9900 X1 X2 X3);  tauto.
Qed.

Remark rem_9902 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9901 X1 X2 X3).
Qed.

Remark rem_9903 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9902 X1 X2 X3 X4).
Qed.

Remark rem_9904 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9905 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9904 X1 X2 X3 X4).
Qed.

Remark rem_9906 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9901 X1 X2 X3).
Qed.

Remark rem_9907 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9906 X1 X2 X3 X4).
Qed.

Remark rem_9908 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9190 X1 X2 X3 X4).
Qed.

Remark rem_9909 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9910 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9909 X1 X2 X3 X4).
Qed.

Remark rem_9911 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9912 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9911 X1 X2 X3 X4).
Qed.

Remark rem_9913 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9914 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9913 X1 X2 X3 X4).
Qed.

Remark rem_9915 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9916 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9915 X1 X2 X3 X4).
Qed.

Remark rem_9917 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_9918 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9917 X1 X2 X3 X4).
Qed.

Remark rem_9919 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_9920 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9919 X1 X2 X3 X4).
Qed.

Remark rem_9921 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9922 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9921 X1 X2 X3 X4).
Qed.

Remark rem_9923 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9901 X1 X2 X3).
Qed.

Remark rem_9924 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9923 X1 X2 X3 X4).
Qed.

Remark rem_9925 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9926 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9925 X1 X2 X3 X4).
Qed.

Remark rem_9927 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9928 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9927 X1 X2 X3 X4).
Qed.

Remark rem_9929 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9930 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9929 X1 X2 X3 X4).
Qed.

Remark rem_9931 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9932 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9931 X1 X2 X3 X4).
Qed.

Remark rem_9933 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_651 X4 X3 X2 H);  intros.
  apply (rem_9872 X1 X2 X3 X4);  tauto.
  apply (rem_9874 X1 X2 X3 X4);  tauto.
  apply (rem_9876 X1 X2 X3 X4);  tauto.
  apply (rem_9878 X1 X2 X3 X4);  tauto.
  apply (rem_9879 X1 X2 X3 X4);  tauto.
  apply (rem_9881 X1 X2 X3 X4);  tauto.
  apply (rem_9883 X1 X2 X3 X4);  tauto.
  apply (rem_9885 X1 X2 X3 X4);  tauto.
  apply (rem_9903 X1 X2 X3 X4);  tauto.
  apply (rem_9905 X1 X2 X3 X4);  tauto.
  apply (rem_9907 X1 X2 X3 X4);  tauto.
  apply (rem_9908 X1 X2 X3 X4);  tauto.
  apply (rem_9910 X1 X2 X3 X4);  tauto.
  apply (rem_9912 X1 X2 X3 X4);  tauto.
  apply (rem_9914 X1 X2 X3 X4);  tauto.
  apply (rem_9916 X1 X2 X3 X4);  tauto.
  apply (rem_9918 X1 X2 X3 X4);  tauto.
  apply (rem_9920 X1 X2 X3 X4);  tauto.
  apply (rem_9922 X1 X2 X3 X4);  tauto.
  apply (rem_9924 X1 X2 X3 X4);  tauto.
  apply (rem_9926 X1 X2 X3 X4);  tauto.
  apply (rem_9928 X1 X2 X3 X4);  tauto.
  apply (rem_9930 X1 X2 X3 X4);  tauto.
  apply (rem_9932 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9934 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9933 X1 X2 X3 X4).
Qed.

Remark rem_9935 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 (noncea_old X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_9934 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9936 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 (key pub X4) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q3 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9935 X1 X2 X3 X4).
Qed.

Remark rem_9937 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9938 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9937 X1 X2 X3 X4).
Qed.

Remark rem_9939 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9940 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9939 X1 X2 X3 X4).
Qed.

Remark rem_9941 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9942 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9941 X1 X2 X3 X4).
Qed.

Remark rem_9943 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9944 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9943 X1 X2 X3 X4).
Qed.

Remark rem_9945 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9240 X1 X2 X3 X4).
Qed.

Remark rem_9946 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9947 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9946 X1 X2 X3 X4).
Qed.

Remark rem_9948 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9949 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9948 X1 X2 X3 X4).
Qed.

Remark rem_9950 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9951 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9950 X1 X2 X3 X4).
Qed.

Remark rem_9952 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9901 X1 X2 X3).
Qed.

Remark rem_9953 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9952 X1 X2 X3 X4).
Qed.

Remark rem_9954 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9955 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9954 X1 X2 X3 X4).
Qed.

Remark rem_9956 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9901 X1 X2 X3).
Qed.

Remark rem_9957 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9956 X1 X2 X3 X4).
Qed.

Remark rem_9958 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9242 X1 X2 X3 X4).
Qed.

Remark rem_9959 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9960 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9959 X1 X2 X3 X4).
Qed.

Remark rem_9961 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9962 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9961 X1 X2 X3 X4).
Qed.

Remark rem_9963 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9964 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9963 X1 X2 X3 X4).
Qed.

Remark rem_9965 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9966 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9965 X1 X2 X3 X4).
Qed.

Remark rem_9967 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_9968 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9967 X1 X2 X3 X4).
Qed.

Remark rem_9969 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_9970 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9969 X1 X2 X3 X4).
Qed.

Remark rem_9971 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9972 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9971 X1 X2 X3 X4).
Qed.

Remark rem_9973 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9901 X1 X2 X3).
Qed.

Remark rem_9974 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9973 X1 X2 X3 X4).
Qed.

Remark rem_9975 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9976 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9975 X1 X2 X3 X4).
Qed.

Remark rem_9977 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_9978 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9977 X1 X2 X3 X4).
Qed.

Remark rem_9979 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9980 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9979 X1 X2 X3 X4).
Qed.

Remark rem_9981 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9982 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9981 X1 X2 X3 X4).
Qed.

Remark rem_9983 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_651 X4 X3 X2 H);  intros.
  apply (rem_9938 X1 X2 X3 X4);  tauto.
  apply (rem_9940 X1 X2 X3 X4);  tauto.
  apply (rem_9942 X1 X2 X3 X4);  tauto.
  apply (rem_9944 X1 X2 X3 X4);  tauto.
  apply (rem_9945 X1 X2 X3 X4);  tauto.
  apply (rem_9947 X1 X2 X3 X4);  tauto.
  apply (rem_9949 X1 X2 X3 X4);  tauto.
  apply (rem_9951 X1 X2 X3 X4);  tauto.
  apply (rem_9953 X1 X2 X3 X4);  tauto.
  apply (rem_9955 X1 X2 X3 X4);  tauto.
  apply (rem_9957 X1 X2 X3 X4);  tauto.
  apply (rem_9958 X1 X2 X3 X4);  tauto.
  apply (rem_9960 X1 X2 X3 X4);  tauto.
  apply (rem_9962 X1 X2 X3 X4);  tauto.
  apply (rem_9964 X1 X2 X3 X4);  tauto.
  apply (rem_9966 X1 X2 X3 X4);  tauto.
  apply (rem_9968 X1 X2 X3 X4);  tauto.
  apply (rem_9970 X1 X2 X3 X4);  tauto.
  apply (rem_9972 X1 X2 X3 X4);  tauto.
  apply (rem_9974 X1 X2 X3 X4);  tauto.
  apply (rem_9976 X1 X2 X3 X4);  tauto.
  apply (rem_9978 X1 X2 X3 X4);  tauto.
  apply (rem_9980 X1 X2 X3 X4);  tauto.
  apply (rem_9982 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9984 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9983 X1 X2 X3 X4).
Qed.

Remark rem_9985 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 (noncea_old X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_9984 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_9986 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q2 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9985 X1 X2 X3 X4).
Qed.

Remark rem_9987 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9988 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9987 X1 X2 X3 X4).
Qed.

Remark rem_9989 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9990 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9989 X1 X2 X3 X4).
Qed.

Remark rem_9991 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_9992 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9991 X1 X2 X3 X4).
Qed.

Remark rem_9993 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_9994 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9993 X1 X2 X3 X4).
Qed.

Remark rem_9995 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_9996 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9995 X1 X2 X3 X4).
Qed.

Remark rem_9997 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_9998 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9997 X1 X2 X3 X4).
Qed.

Remark rem_9999 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_10000 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9999 X1 X2 X3 X4).
Qed.

Remark rem_10001 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_10002 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10001 X1 X2 X3 X4).
Qed.

Remark rem_10003 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_10004 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10003 X1 X2 X3 X4).
Qed.

Remark rem_10005 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_10006 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10005 X1 X2 X3 X4).
Qed.

Remark rem_10007 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_10008 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10007 X1 X2 X3 X4).
Qed.

Remark rem_10009 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_10010 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10009 X1 X2 X3 X4).
Qed.

Remark rem_10011 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_10012 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10011 X1 X2 X3 X4).
Qed.

Remark rem_10013 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_10014 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10013 X1 X2 X3 X4).
Qed.

Remark rem_10015 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_10016 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10015 X1 X2 X3 X4).
Qed.

Remark rem_10017 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_10018 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10017 X1 X2 X3 X4).
Qed.

Remark rem_10019 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_10020 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10019 X1 X2 X3 X4).
Qed.

Remark rem_10021 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_10022 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10021 X1 X2 X3 X4).
Qed.

Remark rem_10023 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_10024 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10023 X1 X2 X3 X4).
Qed.

Remark rem_10025 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9901 X1 X2 X3).
Qed.

Remark rem_10026 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10025 X1 X2 X3 X4).
Qed.

Remark rem_10027 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_10028 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10027 X1 X2 X3 X4).
Qed.

Remark rem_10029 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_10030 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10029 X1 X2 X3 X4).
Qed.

Remark rem_10031 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_10032 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10031 X1 X2 X3 X4).
Qed.

Remark rem_10033 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X4)). tauto.
Qed.

Remark rem_10034 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10033 X1 X2 X3 X4).
Qed.

Remark rem_10035 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_651 X4 X3 X2 H);  intros.
  apply (rem_9988 X1 X2 X3 X4);  tauto.
  apply (rem_9990 X1 X2 X3 X4);  tauto.
  apply (rem_9992 X1 X2 X3 X4);  tauto.
  apply (rem_9994 X1 X2 X3 X4);  tauto.
  apply (rem_9996 X1 X2 X3 X4);  tauto.
  apply (rem_9998 X1 X2 X3 X4);  tauto.
  apply (rem_10000 X1 X2 X3 X4);  tauto.
  apply (rem_10002 X1 X2 X3 X4);  tauto.
  apply (rem_10004 X1 X2 X3 X4);  tauto.
  apply (rem_10006 X1 X2 X3 X4);  tauto.
  apply (rem_10008 X1 X2 X3 X4);  tauto.
  apply (rem_10010 X1 X2 X3 X4);  tauto.
  apply (rem_10012 X1 X2 X3 X4);  tauto.
  apply (rem_10014 X1 X2 X3 X4);  tauto.
  apply (rem_10016 X1 X2 X3 X4);  tauto.
  apply (rem_10018 X1 X2 X3 X4);  tauto.
  apply (rem_10020 X1 X2 X3 X4);  tauto.
  apply (rem_10022 X1 X2 X3 X4);  tauto.
  apply (rem_10024 X1 X2 X3 X4);  tauto.
  apply (rem_10026 X1 X2 X3 X4);  tauto.
  apply (rem_10028 X1 X2 X3 X4);  tauto.
  apply (rem_10030 X1 X2 X3 X4);  tauto.
  apply (rem_10032 X1 X2 X3 X4);  tauto.
  apply (rem_10034 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_10036 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 pub -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_10035 X1 X2 X3 X4).
Qed.

Remark rem_10037 : forall X1 X2 X3 X4:term, auto__q3 pub -> auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 pub -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10036 X1 X2 X3 X4).
Qed.

Remark rem_10038 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_10039 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10038 X1 X2 X3 X4).
Qed.

Remark rem_10040 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_10041 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10040 X1 X2 X3 X4).
Qed.

Remark rem_10042 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_10043 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10042 X1 X2 X3 X4).
Qed.

Remark rem_10044 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10009 X1 X2 X3 X4).
Qed.

Remark rem_10045 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9340 X1 X2 X3 X4).
Qed.

Remark rem_10046 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10027 X1 X2 X3 X4).
Qed.

Remark rem_10047 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10011 X1 X2 X3 X4).
Qed.

Remark rem_10048 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_10049 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10048 X1 X2 X3 X4).
Qed.

Remark rem_10050 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_10051 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10050 X1 X2 X3 X4).
Qed.

Remark rem_10052 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_10053 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10052 X1 X2 X3 X4).
Qed.

Remark rem_10054 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9901 X1 X2 X3).
Qed.

Remark rem_10055 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10054 X1 X2 X3 X4).
Qed.

Remark rem_10056 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9342 X1 X2 X3 X4).
Qed.

Remark rem_10057 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_10058 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10057 X1 X2 X3 X4).
Qed.

Remark rem_10059 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_10060 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10059 X1 X2 X3 X4).
Qed.

Remark rem_10061 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9995 X1 X2 X3 X4).
Qed.

Remark rem_10062 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_10063 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10062 X1 X2 X3 X4).
Qed.

Remark rem_10064 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_10065 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10064 X1 X2 X3 X4).
Qed.

Remark rem_10066 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_10067 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10066 X1 X2 X3 X4).
Qed.

Remark rem_10068 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_10069 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10068 X1 X2 X3 X4).
Qed.

Remark rem_10070 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10007 X1 X2 X3 X4).
Qed.

Remark rem_10071 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_10072 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10071 X1 X2 X3 X4).
Qed.

Remark rem_10073 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10005 X1 X2 X3 X4).
Qed.

Remark rem_10074 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1117 X4)). tauto.
Qed.

Remark rem_10075 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10074 X1 X2 X3 X4).
Qed.

Remark rem_10076 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X4)). tauto.
Qed.

Remark rem_10077 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10076 X1 X2 X3 X4).
Qed.

Remark rem_10078 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_651 X4 X3 X2 H);  intros.
  apply (rem_10039 X1 X2 X3 X4);  tauto.
  apply (rem_10041 X1 X2 X3 X4);  tauto.
  apply (rem_10043 X1 X2 X3 X4);  tauto.
  apply (rem_10044 X1 X2 X3 X4);  tauto.
  apply (rem_10045 X1 X2 X3 X4);  tauto.
  apply (rem_10046 X1 X2 X3 X4);  tauto.
  apply (rem_10047 X1 X2 X3 X4);  tauto.
  apply (rem_10049 X1 X2 X3 X4);  tauto.
  apply (rem_10051 X1 X2 X3 X4);  tauto.
  apply (rem_10053 X1 X2 X3 X4);  tauto.
  apply (rem_10055 X1 X2 X3 X4);  tauto.
  apply (rem_10056 X1 X2 X3 X4);  tauto.
  apply (rem_10058 X1 X2 X3 X4);  tauto.
  apply (rem_10060 X1 X2 X3 X4);  tauto.
  apply (rem_10061 X1 X2 X3 X4);  tauto.
  apply (rem_10063 X1 X2 X3 X4);  tauto.
  apply (rem_10065 X1 X2 X3 X4);  tauto.
  apply (rem_10067 X1 X2 X3 X4);  tauto.
  apply (rem_10069 X1 X2 X3 X4);  tauto.
  apply (rem_10070 X1 X2 X3 X4);  tauto.
  apply (rem_10072 X1 X2 X3 X4);  tauto.
  apply (rem_10073 X1 X2 X3 X4);  tauto.
  apply (rem_10075 X1 X2 X3 X4);  tauto.
  apply (rem_10077 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_10079 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q1 pub -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_10078 X1 X2 X3 X4).
Qed.

Remark rem_10080 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q1 pub -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10079 X1 X2 X3 X4).
Qed.

Remark rem_10081 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X2)). tauto.
Qed.

Remark rem_10082 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10081 X1 X2 X3 X4).
Qed.

Remark rem_10083 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_10084 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10083 X1 X2 X3 X4).
Qed.

Remark rem_10085 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_10086 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10085 X1 X2 X3 X4).
Qed.

Remark rem_10087 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10013 X1 X2 X3 X4).
Qed.

Remark rem_10088 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10076 X1 X2 X3 X4).
Qed.

Remark rem_10089 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9989 X1 X2 X3 X4).
Qed.

Remark rem_10090 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9991 X1 X2 X3 X4).
Qed.

Remark rem_10091 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10023 X1 X2 X3 X4).
Qed.

Remark rem_10092 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_9901 X1 X2 X3).
Qed.

Remark rem_10093 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10092 X1 X2 X3 X4).
Qed.

Remark rem_10094 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10038 X1 X2 X3 X4).
Qed.

Remark rem_10095 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10050 X1 X2 X3 X4).
Qed.

Remark rem_10096 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10059 X1 X2 X3 X4).
Qed.

Remark rem_10097 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10042 X1 X2 X3 X4).
Qed.

Remark rem_10098 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_10099 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10098 X1 X2 X3 X4).
Qed.

Remark rem_10100 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10033 X1 X2 X3 X4).
Qed.

Remark rem_10101 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_10102 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10101 X1 X2 X3 X4).
Qed.

Remark rem_10103 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X2)). tauto.
Qed.

Remark rem_10104 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10103 X1 X2 X3 X4).
Qed.

Remark rem_10105 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10019 X1 X2 X3 X4).
Qed.

Remark rem_10106 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1241 X3)). tauto.
Qed.

Remark rem_10107 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q3 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10106 X1 X2 X3 X4).
Qed.

Remark rem_10108 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10003 X1 X2 X3 X4).
Qed.

Remark rem_10109 : forall X1 X2 X3 X4:term, auto__q3 X4 -> auto__q3 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10040 X1 X2 X3 X4).
Qed.

Remark rem_10110 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X4 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_9987 X1 X2 X3 X4).
Qed.

Remark rem_10111 : forall X1 X2 X3 X4:term, auto__q2 X4 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q3 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10017 X1 X2 X3 X4).
Qed.

Remark rem_10112 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1130 X3)). tauto.
Qed.

Remark rem_10113 : forall X1 X2 X3 X4:term, auto__q1 X4 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10112 X1 X2 X3 X4).
Qed.

Remark rem_10114 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_651 X4 X3 X2 H);  intros.
  apply (rem_10082 X1 X2 X3 X4);  tauto.
  apply (rem_10084 X1 X2 X3 X4);  tauto.
  apply (rem_10086 X1 X2 X3 X4);  tauto.
  apply (rem_10087 X1 X2 X3 X4);  tauto.
  apply (rem_10088 X1 X2 X3 X4);  tauto.
  apply (rem_10089 X1 X2 X3 X4);  tauto.
  apply (rem_10090 X1 X2 X3 X4);  tauto.
  apply (rem_10091 X1 X2 X3 X4);  tauto.
  apply (rem_10093 X1 X2 X3 X4);  tauto.
  apply (rem_10094 X1 X2 X3 X4);  tauto.
  apply (rem_10095 X1 X2 X3 X4);  tauto.
  apply (rem_10096 X1 X2 X3 X4);  tauto.
  apply (rem_10097 X1 X2 X3 X4);  tauto.
  apply (rem_10099 X1 X2 X3 X4);  tauto.
  apply (rem_10100 X1 X2 X3 X4);  tauto.
  apply (rem_10102 X1 X2 X3 X4);  tauto.
  apply (rem_10104 X1 X2 X3 X4);  tauto.
  apply (rem_10105 X1 X2 X3 X4);  tauto.
  apply (rem_10107 X1 X2 X3 X4);  tauto.
  apply (rem_10108 X1 X2 X3 X4);  tauto.
  apply (rem_10109 X1 X2 X3 X4);  tauto.
  apply (rem_10110 X1 X2 X3 X4);  tauto.
  apply (rem_10111 X1 X2 X3 X4);  tauto.
  apply (rem_10113 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_10115 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q1 pub -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_10114 X1 X2 X3 X4).
Qed.

Remark rem_10116 : forall X1 X2 X3 X4:term, auto__q1 pub -> auto__q1 X4 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2 -> auto__q1 (noncea_old X4 X3 X2) -> auto__q1 pub -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10115 X1 X2 X3 X4).
Qed.

Remark rem_10117 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (key pub X4) -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_703 pub X4 H);  intros.
  apply (rem_10037 X1 X2 X3 X4);  tauto.
  apply (rem_10080 X1 X2 X3 X4);  tauto.
  apply (rem_10116 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_10118 : forall X1 X2 X3 X4:term, auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (key pub X4) -> auto__q1 (noncea_old X4 X3 X2) -> auto__q2 (cons X1 (cons X3 nil)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10117 X1 X2 X3 X4).
Qed.

Remark rem_10119 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_689 (noncea_old X4 X3 X2) (cons X1 (cons X3 nil)) H);  intros.
  apply (rem_10118 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_10120 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) -> auto__q1 (key pub X4) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10119 X1 X2 X3 X4).
Qed.

Remark rem_10121 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_5580 (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4) H);  intros.
  apply (rem_9447 X1 X2 X3 X4);  tauto.
  apply (rem_9766 X1 X2 X3 X4);  tauto.
  apply (rem_9870 X1 X2 X3 X4);  tauto.
  apply (rem_9936 X1 X2 X3 X4);  tauto.
  apply (rem_9986 X1 X2 X3 X4);  tauto.
  apply (rem_10120 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_10122 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 nil -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_10121 X1 X2 X3 X4).
Qed.

Remark rem_10123 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 nil -> auto__q1 X2 -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 nil -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10122 X1 X2 X3 X4).
Qed.

Remark rem_10124 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_105 X3 nil H);  intros.
  apply (rem_9412 X1 X2 X3 X4);  tauto.
  apply (rem_9414 X1 X2 X3 X4);  tauto.
  apply (rem_10123 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_10125 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_689 X2 (cons X3 nil) H);  intros.
  apply (rem_10124 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_10126 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto__q3 (key prv server) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (cons X2 (cons X3 nil)) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_10125 X1 X2 X3 X4).
Qed.

Remark rem_10127 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 (key prv server) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (cons X2 (cons X3 nil)) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_10125 X1 X2 X3 X4).
Qed.

Remark rem_10128 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto__q1 (key prv server) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (cons X2 (cons X3 nil)) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2)). tauto.
  exact (rem_10125 X1 X2 X3 X4).
Qed.

Remark rem_10129 : forall X1 X2 X3 X4:term, auto_knows_old (crypt (cons X2 (cons X3 nil)) (key prv server)) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_5580 (cons X2 (cons X3 nil)) (key prv server) H);  intros.
  apply (rem_8688 X1 X2 X3 X4);  tauto.
  apply (rem_8690 X1 X2 X3 X4);  tauto.
  apply (rem_8692 X1 X2 X3 X4);  tauto.
  apply (rem_10126 X1 X2 X3 X4);  tauto.
  apply (rem_10127 X1 X2 X3 X4);  tauto.
  apply (rem_10128 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_10130 : forall _big_a _big_b _big_kPb _big_nb:term, auto_knows_old (crypt (cons (noncea_old _big_a _big_b _big_kPb) (cons _big_nb (cons _big_b nil))) (key pub _big_a)) -> auto_knows_old (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) -> auto_knows_old (crypt _big_nb _big_kPb). (* Prove equivalent, normalized clause. *)
Proof.
   intros X4 X3 X2 X1.
  cut (auto_knows_old (crypt (cons X2 (cons X3 nil)) (key prv server)) -> auto_knows_old (crypt (cons (noncea_old X4 X3 X2) (cons X1 (cons X3 nil))) (key pub X4)) -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_10129 X1 X2 X3 X4).
Qed.

Remark rem_10131 : forall X1 X2 X3:term, auto__q2 (cons X3 (cons X2 nil)) -> auto__q2 (key prv server) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 (key prv server) -> False). tauto.
  exact (rem_1034).
Qed.

Remark rem_10132 : forall X1 X2 X3:term, auto__q1 (key prv server) -> auto__q3 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 (key prv server) -> False). tauto.
  exact (rem_1040).
Qed.

Remark rem_10133 : forall X1 X2 X3:term, auto__q3 (cons X3 (cons X2 nil)) -> auto__q1 (key prv server) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (key prv server) -> auto__q3 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10132 X1 X2 X3).
Qed.

Remark rem_10134 : forall X1 X2 X3:term, auto__q1 (key prv server) -> auto__q2 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 (key prv server) -> False). tauto.
  exact (rem_1040).
Qed.

Remark rem_10135 : forall X1 X2 X3:term, auto__q2 (cons X3 (cons X2 nil)) -> auto__q1 (key prv server) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (key prv server) -> auto__q2 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10134 X1 X2 X3).
Qed.

Remark rem_10136 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3025 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_noncea_current_7;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10137 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3201 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10138 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3021 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10137 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10139 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10138 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

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

Remark rem_10141 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons (noncea_current X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10140 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

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

Remark rem_10143 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10142 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10144 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q1 X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10143 X1 X2 X3).
Qed.

Remark rem_10145 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3037 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_noncea_current_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10146 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3213 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10147 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3034 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10146 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10148 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10147 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10149 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> (auto__q3 (noncea_current X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 (noncea_current X1 X2 X3)). 2:apply (rem_10145 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10148 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10150 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 (cons (noncea_current X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10149 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10151 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> (auto__q3 (cons (noncea_current X1 X2 X3) (cons X1 nil)) /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 (cons (noncea_current X1 X2 X3) (cons X1 nil))). 2:apply (rem_10150 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3036 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10152 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10151 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10153 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_10144 X1 X2 X3);  tauto.
  apply (rem_10152 X1 X2 X3);  tauto.
Qed.

Remark rem_10154 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 nil -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10153 X1 X2 X3).
Qed.

Remark rem_10155 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X3 -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 nil -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10154 X1 X2 X3).
Qed.

Remark rem_10156 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 nil -> auto__q2 X2 -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10153 X1 X2 X3).
Qed.

Remark rem_10157 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X3 -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 nil -> auto__q2 X2 -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10156 X1 X2 X3).
Qed.

Remark rem_10158 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2983 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_noncea_current_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

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

Remark rem_10160 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> (auto__q1 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_2979 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10159 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10161 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10160 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10162 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> (auto__q3 (noncea_current X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 (noncea_current X1 X2 X3)). 2:apply (rem_10158 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10161 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10163 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q3 (cons (noncea_current X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10162 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10164 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> (auto__q3 (cons (noncea_current X1 X2 X3) (cons X1 nil)) /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 (cons (noncea_current X1 X2 X3) (cons X1 nil))). 2:apply (rem_10163 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2982 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10165 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10164 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10166 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2995 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_noncea_current_11;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10167 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3173 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10168 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_2992 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10167 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10169 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10168 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10170 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> (auto__q3 (noncea_current X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 (noncea_current X1 X2 X3)). 2:apply (rem_10166 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10169 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10171 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons (noncea_current X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10170 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_cons_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10172 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> (auto__q3 (cons (noncea_current X1 X2 X3) (cons X1 nil)) /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 (cons (noncea_current X1 X2 X3) (cons X1 nil))). 2:apply (rem_10171 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2994 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10173 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10172 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10174 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_10165 X1 X2 X3);  tauto.
  apply (rem_10173 X1 X2 X3);  tauto.
Qed.

Remark rem_10175 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 nil -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10174 X1 X2 X3).
Qed.

Remark rem_10176 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X3 -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 nil -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10175 X1 X2 X3).
Qed.

Remark rem_10177 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 (cons X2 nil) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_10155 X1 X2 X3);  tauto.
  apply (rem_10157 X1 X2 X3);  tauto.
  apply (rem_10176 X1 X2 X3);  tauto.
Qed.

Remark rem_10178 : forall X1 X2 X3:term, auto__q1 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_689 X3 (cons X2 nil) H);  intros.
  apply (rem_10177 X1 X2 X3);  tauto.
Qed.

Remark rem_10179 : forall X1 X2 X3:term, auto__q1 (cons X3 (cons X2 nil)) -> auto__q3 (key prv server) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10178 X1 X2 X3).
Qed.

Remark rem_10180 : forall X1 X2 X3:term, auto__q1 (cons X3 (cons X2 nil)) -> auto__q2 (key prv server) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10178 X1 X2 X3).
Qed.

Remark rem_10181 : forall X1 X2 X3:term, auto__q1 (cons X3 (cons X2 nil)) -> auto__q1 (key prv server) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10178 X1 X2 X3).
Qed.

Remark rem_10182 : forall X1 X2 X3:term, auto_agent X1 -> auto_knows_current (crypt (cons X3 (cons X2 nil)) (key prv server)) -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1509 (cons X3 (cons X2 nil)) (key prv server) H);  intros.
  apply (rem_10131 X1 X2 X3);  tauto.
  apply (rem_10133 X1 X2 X3);  tauto.
  apply (rem_10135 X1 X2 X3);  tauto.
  apply (rem_10179 X1 X2 X3);  tauto.
  apply (rem_10180 X1 X2 X3);  tauto.
  apply (rem_10181 X1 X2 X3);  tauto.
Qed.

Remark rem_10183 : forall _big_a _big_b _big_kPb:term, auto_agent _big_a -> auto_knows_current (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) -> auto_knows_current (crypt (cons (noncea_current _big_a _big_b _big_kPb) (cons _big_a nil)) _big_kPb). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_agent X1 -> auto_knows_current (crypt (cons X3 (cons X2 nil)) (key prv server)) -> auto_knows_current (crypt (cons (noncea_current X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10182 X1 X2 X3).
Qed.

Remark rem_10184 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3142 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_24;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10185 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3316 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10186 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3139 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10185 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10187 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10186 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10188 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10184 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10187 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10189 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10188 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10190 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10189 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3141 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10191 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10190 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10192 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q1 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10191 X1 X2 X3).
Qed.

Remark rem_10193 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3153 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_15;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10194 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3327 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10195 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3150 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10194 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10196 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10195 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10197 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10193 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10196 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10198 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10197 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10199 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10198 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3152 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10200 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10199 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10201 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_10192 X1 X2 X3);  tauto.
  apply (rem_10200 X1 X2 X3);  tauto.
Qed.

Remark rem_10202 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10201 X1 X2 X3).
Qed.

Remark rem_10203 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 nil -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto__q2 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10202 X1 X2 X3).
Qed.

Remark rem_10204 : forall X1 X2 X3:term, auto__q1 nil -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10201 X1 X2 X3).
Qed.

Remark rem_10205 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 nil -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 nil -> auto__q2 X3 -> auto__q2 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10204 X1 X2 X3).
Qed.

Remark rem_10206 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3104 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10207 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3278 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10208 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3100 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10207 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10209 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10208 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10210 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10206 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10209 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10211 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10210 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10212 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10211 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3103 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10213 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10212 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10214 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q2 X3 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10213 X1 X2 X3).
Qed.

Remark rem_10215 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3116 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_22;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10216 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3290 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10217 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3113 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10216 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10218 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10217 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10219 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10215 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10218 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10220 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10219 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10221 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10220 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3115 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10222 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10221 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10223 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_10214 X1 X2 X3);  tauto.
  apply (rem_10222 X1 X2 X3);  tauto.
Qed.

Remark rem_10224 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 nil -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10223 X1 X2 X3).
Qed.

Remark rem_10225 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 (cons X2 nil) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_10203 X1 X2 X3);  tauto.
  apply (rem_10205 X1 X2 X3);  tauto.
  apply (rem_10224 X1 X2 X3);  tauto.
Qed.

Remark rem_10226 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10223 X1 X2 X3).
Qed.

Remark rem_10227 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 nil -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10226 X1 X2 X3).
Qed.

Remark rem_10228 : forall X1 X2 X3:term, auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_689 X2 nil H);  intros.
  apply (rem_10227 X1 X2 X3);  tauto.
Qed.

Remark rem_10229 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 (cons X2 nil) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (cons X2 nil) -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10228 X1 X2 X3).
Qed.

Remark rem_10230 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2983 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_9;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10231 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10230 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10161 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10232 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10231 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10233 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10232 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2982 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10234 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10233 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10235 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2995 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_20;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10236 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10235 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10169 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10237 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10236 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10238 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10237 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_2994 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10239 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10238 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10240 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_10234 X1 X2 X3);  tauto.
  apply (rem_10239 X1 X2 X3);  tauto.
Qed.

Remark rem_10241 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q2 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10240 X1 X2 X3).
Qed.

Remark rem_10242 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 nil -> auto__q1 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q2 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10241 X1 X2 X3).
Qed.

Remark rem_10243 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 (cons X2 nil) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_689 X2 nil H);  intros.
  apply (rem_10242 X1 X2 X3);  tauto.
Qed.

Remark rem_10244 : forall X1 X2 X3:term, auto__q2 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_105 X3 (cons X2 nil) H);  intros.
  apply (rem_10225 X1 X2 X3);  tauto.
  apply (rem_10229 X1 X2 X3);  tauto.
  apply (rem_10243 X1 X2 X3);  tauto.
Qed.

Remark rem_10245 : forall X1 X2 X3:term, auto__q2 (cons X3 (cons X2 nil)) -> auto__q2 (key prv server) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10244 X1 X2 X3).
Qed.

Remark rem_10246 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3066 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10247 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3241 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10248 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3063 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10247 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10249 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10248 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10250 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10246 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10249 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10251 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10250 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10252 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10251 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3065 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10253 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10252 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10254 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 X2 -> auto__q1 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10253 X1 X2 X3).
Qed.

Remark rem_10255 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3077 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_7;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10256 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3252 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10257 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3074 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10256 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10258 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10257 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10259 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10255 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10258 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10260 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10259 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10261 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10260 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3076 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10262 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10261 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10263 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 X2 -> auto__q2 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X3 -> auto__q3 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10262 X1 X2 X3).
Qed.

Remark rem_10264 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_10254 X1 X2 X3);  tauto.
  apply (rem_10263 X1 X2 X3);  tauto.
Qed.

Remark rem_10265 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 X2 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10264 X1 X2 X3).
Qed.

Remark rem_10266 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 nil -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X2 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10265 X1 X2 X3).
Qed.

Remark rem_10267 : forall X1 X2 X3:term, auto__q1 nil -> auto__q3 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10264 X1 X2 X3).
Qed.

Remark rem_10268 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 nil -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 nil -> auto__q3 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10267 X1 X2 X3).
Qed.

Remark rem_10269 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3084 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_16;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10270 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3259 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10271 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3081 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10270 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10272 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10271 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10273 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10269 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10272 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10274 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10273 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10275 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10274 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3083 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10276 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10275 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10277 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q1 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10276 X1 X2 X3).
Qed.

Remark rem_10278 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3095 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_23;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10279 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3270 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10280 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3092 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10279 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10281 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10280 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10282 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10278 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10281 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10283 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10282 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10284 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10283 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3094 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10285 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10284 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10286 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q2 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10285 X1 X2 X3).
Qed.

Remark rem_10287 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_10277 X1 X2 X3);  tauto.
  apply (rem_10286 X1 X2 X3);  tauto.
Qed.

Remark rem_10288 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10287 X1 X2 X3).
Qed.

Remark rem_10289 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 nil -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X3 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10288 X1 X2 X3).
Qed.

Remark rem_10290 : forall X1 X2 X3:term, auto__q2 nil -> auto__q3 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10264 X1 X2 X3).
Qed.

Remark rem_10291 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 nil -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 nil -> auto__q3 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10290 X1 X2 X3).
Qed.

Remark rem_10292 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3047 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_17;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10293 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3222 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10294 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3043 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10293 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10295 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10294 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10296 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10292 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10295 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10297 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10296 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10298 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10297 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3046 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10299 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10298 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10300 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q1 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto__q3 X3 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10299 X1 X2 X3).
Qed.

Remark rem_10301 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3059 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_18;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10302 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3234 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10303 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3056 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10302 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10304 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10303 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10305 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10301 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10304 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10306 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10305 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10307 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10306 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3058 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10308 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10307 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10309 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q2 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10308 X1 X2 X3).
Qed.

Remark rem_10310 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_10300 X1 X2 X3);  tauto.
  apply (rem_10309 X1 X2 X3);  tauto.
Qed.

Remark rem_10311 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10310 X1 X2 X3).
Qed.

Remark rem_10312 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 nil -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X3 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10311 X1 X2 X3).
Qed.

Remark rem_10313 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q3 (cons X2 nil) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1107 X2 nil H);  intros.
  apply (rem_10266 X1 X2 X3);  tauto.
  apply (rem_10268 X1 X2 X3);  tauto.
  apply (rem_10289 X1 X2 X3);  tauto.
  apply (rem_10291 X1 X2 X3);  tauto.
  apply (rem_10312 X1 X2 X3);  tauto.
Qed.

Remark rem_10314 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 nil -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10310 X1 X2 X3).
Qed.

Remark rem_10315 : forall X1 X2 X3:term, auto__q1 (cons X2 nil) -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_689 X2 nil H);  intros.
  apply (rem_10314 X1 X2 X3);  tauto.
Qed.

Remark rem_10316 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q1 (cons X2 nil) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (cons X2 nil) -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10315 X1 X2 X3).
Qed.

Remark rem_10317 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3123 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_19;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10318 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3297 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10319 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3120 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10318 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10320 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10319 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10321 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10317 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10320 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10322 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10321 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10323 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10322 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3122 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10324 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10323 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10325 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10324 X1 X2 X3).
Qed.

Remark rem_10326 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3134 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_8;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10327 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3308 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10328 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3131 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10327 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10329 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10328 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10330 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10326 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10329 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10331 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10330 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10332 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10331 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3133 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10333 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10332 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10334 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10333 X1 X2 X3).
Qed.

Remark rem_10335 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_10325 X1 X2 X3);  tauto.
  apply (rem_10334 X1 X2 X3);  tauto.
Qed.

Remark rem_10336 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10335 X1 X2 X3).
Qed.

Remark rem_10337 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 nil -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X2 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10336 X1 X2 X3).
Qed.

Remark rem_10338 : forall X1 X2 X3:term, auto__q1 nil -> auto__q2 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10335 X1 X2 X3).
Qed.

Remark rem_10339 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 nil -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 nil -> auto__q2 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10338 X1 X2 X3).
Qed.

Remark rem_10340 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10201 X1 X2 X3).
Qed.

Remark rem_10341 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 nil -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10340 X1 X2 X3).
Qed.

Remark rem_10342 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 nil -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10335 X1 X2 X3).
Qed.

Remark rem_10343 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 nil -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 nil -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10342 X1 X2 X3).
Qed.

Remark rem_10344 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10223 X1 X2 X3).
Qed.

Remark rem_10345 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 nil -> auto__q2 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10344 X1 X2 X3).
Qed.

Remark rem_10346 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 (cons X2 nil) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1107 X2 nil H);  intros.
  apply (rem_10337 X1 X2 X3);  tauto.
  apply (rem_10339 X1 X2 X3);  tauto.
  apply (rem_10341 X1 X2 X3);  tauto.
  apply (rem_10343 X1 X2 X3);  tauto.
  apply (rem_10345 X1 X2 X3);  tauto.
Qed.

Remark rem_10347 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 nil -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10287 X1 X2 X3).
Qed.

Remark rem_10348 : forall X1 X2 X3:term, auto__q1 nil -> auto__q2 X2 -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10287 X1 X2 X3).
Qed.

Remark rem_10349 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 nil -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 nil -> auto__q2 X2 -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10348 X1 X2 X3).
Qed.

Remark rem_10350 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 nil -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10310 X1 X2 X3).
Qed.

Remark rem_10351 : forall X1 X2 X3:term, auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_10347 X1 X2 X3);  tauto.
  apply (rem_10349 X1 X2 X3);  tauto.
  apply (rem_10350 X1 X2 X3);  tauto.
Qed.

Remark rem_10352 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q2 (cons X2 nil) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 (cons X2 nil) -> auto__q3 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10351 X1 X2 X3).
Qed.

Remark rem_10353 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3004 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10354 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3181 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10355 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3000 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10354 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10356 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10355 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10357 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10353 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10356 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10358 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10357 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10359 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10358 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3003 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10360 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10359 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10361 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q1 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10360 X1 X2 X3).
Qed.

Remark rem_10362 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3016 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10363 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3193 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10364 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3013 X1 X2 X3);  assumption.
  cut (auto__q1 nil). 2:apply (rem_10363 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10365 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 (cons X1 nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10364 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10366 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10362 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10365 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10367 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10366 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10368 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10367 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3015 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10369 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10368 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10370 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q2 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10369 X1 X2 X3).
Qed.

Remark rem_10371 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_10361 X1 X2 X3);  tauto.
  apply (rem_10370 X1 X2 X3);  tauto.
Qed.

Remark rem_10372 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10371 X1 X2 X3).
Qed.

Remark rem_10373 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 nil -> auto__q1 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X2 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10372 X1 X2 X3).
Qed.

Remark rem_10374 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 nil -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10371 X1 X2 X3).
Qed.

Remark rem_10375 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 nil -> auto__q1 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 nil -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10374 X1 X2 X3).
Qed.

Remark rem_10376 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3025 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_14;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10377 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10376 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10139 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10378 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10377 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10379 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10378 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3024 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10380 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10379 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10381 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q1 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10380 X1 X2 X3).
Qed.

Remark rem_10382 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q1 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3037 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_noncea_old_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10383 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> (auto__q1 (noncea_old X1 X2 X3) /\ auto__q2 (cons X1 nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (noncea_old X1 X2 X3)). 2:apply (rem_10382 X1 X2 X3);  assumption.
  cut (auto__q2 (cons X1 nil)). 2:apply (rem_10148 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10384 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10383 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_cons_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10385 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil)) /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 (cons (noncea_old X1 X2 X3) (cons X1 nil))). 2:apply (rem_10384 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3036 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_10386 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10385 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_10387 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_10381 X1 X2 X3);  tauto.
  apply (rem_10386 X1 X2 X3);  tauto.
Qed.

Remark rem_10388 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10387 X1 X2 X3).
Qed.

Remark rem_10389 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 nil -> auto__q1 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10388 X1 X2 X3).
Qed.

Remark rem_10390 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 nil -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10371 X1 X2 X3).
Qed.

Remark rem_10391 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 nil -> auto__q1 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 nil -> auto__q3 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10390 X1 X2 X3).
Qed.

Remark rem_10392 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10240 X1 X2 X3).
Qed.

Remark rem_10393 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 nil -> auto__q1 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q3 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10392 X1 X2 X3).
Qed.

Remark rem_10394 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 (cons X2 nil) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1107 X2 nil H);  intros.
  apply (rem_10373 X1 X2 X3);  tauto.
  apply (rem_10375 X1 X2 X3);  tauto.
  apply (rem_10389 X1 X2 X3);  tauto.
  apply (rem_10391 X1 X2 X3);  tauto.
  apply (rem_10393 X1 X2 X3);  tauto.
Qed.

Remark rem_10395 : forall X1 X2 X3:term, auto__q3 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1107 X3 (cons X2 nil) H);  intros.
  apply (rem_10313 X1 X2 X3);  tauto.
  apply (rem_10316 X1 X2 X3);  tauto.
  apply (rem_10346 X1 X2 X3);  tauto.
  apply (rem_10352 X1 X2 X3);  tauto.
  apply (rem_10394 X1 X2 X3);  tauto.
Qed.

Remark rem_10396 : forall X1 X2 X3:term, auto__q1 (key prv server) -> auto__q3 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10395 X1 X2 X3).
Qed.

Remark rem_10397 : forall X1 X2 X3:term, auto__q3 (cons X3 (cons X2 nil)) -> auto__q1 (key prv server) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (key prv server) -> auto__q3 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10396 X1 X2 X3).
Qed.

Remark rem_10398 : forall X1 X2 X3:term, auto__q1 (key prv server) -> auto__q2 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10244 X1 X2 X3).
Qed.

Remark rem_10399 : forall X1 X2 X3:term, auto__q2 (cons X3 (cons X2 nil)) -> auto__q1 (key prv server) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (key prv server) -> auto__q2 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10398 X1 X2 X3).
Qed.

Remark rem_10400 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10387 X1 X2 X3).
Qed.

Remark rem_10401 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10400 X1 X2 X3).
Qed.

Remark rem_10402 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 nil -> auto__q2 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10387 X1 X2 X3).
Qed.

Remark rem_10403 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 nil -> auto__q2 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10402 X1 X2 X3).
Qed.

Remark rem_10404 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 X2 -> auto__q1 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10240 X1 X2 X3).
Qed.

Remark rem_10405 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X3 -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X2 -> auto__q1 nil -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10404 X1 X2 X3).
Qed.

Remark rem_10406 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 (cons X2 nil) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_105 X2 nil H);  intros.
  apply (rem_10401 X1 X2 X3);  tauto.
  apply (rem_10403 X1 X2 X3);  tauto.
  apply (rem_10405 X1 X2 X3);  tauto.
Qed.

Remark rem_10407 : forall X1 X2 X3:term, auto__q1 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_689 X3 (cons X2 nil) H);  intros.
  apply (rem_10406 X1 X2 X3);  tauto.
Qed.

Remark rem_10408 : forall X1 X2 X3:term, auto__q1 (cons X3 (cons X2 nil)) -> auto__q3 (key prv server) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10407 X1 X2 X3).
Qed.

Remark rem_10409 : forall X1 X2 X3:term, auto__q1 (cons X3 (cons X2 nil)) -> auto__q2 (key prv server) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10407 X1 X2 X3).
Qed.

Remark rem_10410 : forall X1 X2 X3:term, auto__q1 (cons X3 (cons X2 nil)) -> auto__q1 (key prv server) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 (cons X3 (cons X2 nil)) -> auto_agent X1 -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto.
  exact (rem_10407 X1 X2 X3).
Qed.

Remark rem_10411 : forall X1 X2 X3:term, auto_agent X1 -> auto_knows_old (crypt (cons X3 (cons X2 nil)) (key prv server)) -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_5580 (cons X3 (cons X2 nil)) (key prv server) H);  intros.
  apply (rem_10245 X1 X2 X3);  tauto.
  apply (rem_10397 X1 X2 X3);  tauto.
  apply (rem_10399 X1 X2 X3);  tauto.
  apply (rem_10408 X1 X2 X3);  tauto.
  apply (rem_10409 X1 X2 X3);  tauto.
  apply (rem_10410 X1 X2 X3);  tauto.
Qed.

Remark rem_10412 : forall _big_a _big_b _big_kPb:term, auto_agent _big_a -> auto_knows_old (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) -> auto_knows_old (crypt (cons (noncea_old _big_a _big_b _big_kPb) (cons _big_a nil)) _big_kPb). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_agent X1 -> auto_knows_old (crypt (cons X3 (cons X2 nil)) (key prv server)) -> auto_knows_old (crypt (cons (noncea_old X1 X2 X3) (cons X1 nil)) X3)). tauto. exact (rem_10411 X1 X2 X3).
Qed.

Remark rem_10413 : forall X1 X2:term, auto__q2 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__q2 X1 -> auto_knows_old X1). tauto. exact (rem_2490 X1).
Qed.

Remark rem_10414 : forall X1:term, auto__q2 X1 -> auto__q3 prv -> auto_knows_old (key pub X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 prv -> False). tauto.
  exact (rem_1028).
Qed.

Remark rem_10415 : forall X1:term, auto__q3 prv -> auto__q2 X1 -> auto_knows_old (key pub X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q3 prv -> auto_knows_old (key pub X1) -> False). tauto. exact (rem_10414 X1).
Qed.

Remark rem_10416 : forall X1:term, auto__q1 prv -> auto__q3 X1 -> auto_knows_old (key pub X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 prv -> False). tauto.
  exact (rem_1032).
Qed.

Remark rem_10417 : forall X1:term, auto__q1 X1 -> auto__q1 prv -> auto_knows_old (key pub X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 prv -> False). tauto.
  exact (rem_1032).
Qed.

Remark rem_10418 : forall X1:term, auto__q1 prv -> auto__q1 X1 -> auto_knows_old (key pub X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q1 prv -> auto_knows_old (key pub X1) -> False). tauto. exact (rem_10417 X1).
Qed.

Remark rem_10419 : forall X1:term, auto__q1 (key prv X1) -> auto_knows_old (key pub X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_703 prv X1 H);  intros.
  apply (rem_10415 X1);  tauto.
  apply (rem_10416 X1);  tauto.
  apply (rem_10418 X1);  tauto.
Qed.

Remark rem_10420 : forall X2:term, auto__q1 (key prv X2) -> auto_knows_old (key pub X2) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 (key prv X1) -> auto_knows_old (key pub X1) -> False). tauto. exact (rem_10419 X1).
Qed.

Remark rem_10421 : forall X1 X2:term, auto__q1 (key prv X2) -> auto__q3 X1 -> auto_knows_old (key pub X2) -> auto_knows_old X1. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q1 (key prv X2) -> auto_knows_old (key pub X2) -> False). tauto.
  exact (rem_10420 X2).
Qed.

Remark rem_10422 : forall X1 X2:term, auto__q3 X1 -> auto__q1 (key prv X2) -> auto_knows_old (key pub X2) -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 (key prv X2) -> auto__q3 X1 -> auto_knows_old (key pub X2) -> auto_knows_old X1). tauto. exact (rem_10421 X1 X2).
Qed.

Remark rem_10423 : forall X1 X2:term, auto__q1 (key prv X2) -> auto__q2 X1 -> auto_knows_old (key pub X2) -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto_knows_old X1). tauto. exact (rem_2490 X1).
Qed.

Remark rem_10424 : forall X1 X2:term, auto__q2 X1 -> auto__q1 (key prv X2) -> auto_knows_old (key pub X2) -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 (key prv X2) -> auto__q2 X1 -> auto_knows_old (key pub X2) -> auto_knows_old X1). tauto. exact (rem_10423 X1 X2).
Qed.

Remark rem_10425 : forall X1 X2:term, auto__q1 X1 -> auto__q3 (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_2969 X1).
Qed.

Remark rem_10426 : 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_2969 X1).
Qed.

Remark rem_10427 : 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_2969 X1).
Qed.

Remark rem_10428 : 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_5580 X1 (key prv X2) H);  intros.
  apply (rem_10413 X1 X2);  tauto.
  apply (rem_10422 X1 X2);  tauto.
  apply (rem_10424 X1 X2);  tauto.
  apply (rem_10425 X1 X2);  tauto.
  apply (rem_10426 X1 X2);  tauto.
  apply (rem_10427 X1 X2);  tauto.
Qed.

Remark rem_10429 : 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_10428 X1 X2).
Qed.

Remark rem_10430 : (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_10431 : (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_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10432 : (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_10433 : (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_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10434 : (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_10435 : (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_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10436 : (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_10431 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10433 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10435 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10437 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10436 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_1;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10438 : (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_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10439 : (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_10440 : (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_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10441 : (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_10442 : (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_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10443 : (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_10438 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10440 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10442 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10444 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10443 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_2;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10445 : (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_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10446 : (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_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10447 : (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_10448 : (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_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10449 : (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_10445 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10446 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10448 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10450 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10449 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_3;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10451 : (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_10452 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10453 : (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_10454 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10455 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10456 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_10452 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10454 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10455 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10457 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10456 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_4;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10458 : (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_10459 : (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_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10460 : (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_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10461 : (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_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10462 : (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_10459 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10460 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10461 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10463 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10462 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_5;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10464 : (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_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10465 : (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_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10466 : (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_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10467 : (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_10464 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10465 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10466 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10468 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10467 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_6;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10469 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10470 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10471 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10472 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_10469 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10470 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10471 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10473 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10472 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_7;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10474 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10475 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10476 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10477 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_10474 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10475 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10476 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10478 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10477 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_8;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10479 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10480 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10481 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10482 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_10479 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10480 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10481 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10483 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10482 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_9;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10484 : (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_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10485 : (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_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10486 : (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_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10487 : (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_10484 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10485 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10486 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10488 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10487 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_10;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10489 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10490 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10491 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10492 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_10489 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10490 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10491 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10493 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10492 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_11;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10494 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10495 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10496 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10497 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_10494 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10495 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10496 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10498 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10497 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_12;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10499 : (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_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10500 : (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_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10501 : (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_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10502 : (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_10499 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10500 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10501 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10503 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10502 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_13;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10504 : (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_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10505 : (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_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10506 : (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_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10507 : (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_10504 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10505 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10506 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10508 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10507 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_14;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10509 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10510 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10511 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10512 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_10509 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10510 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10511 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10513 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10512 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_15;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10514 : (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_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10515 : (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_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10516 : (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_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10517 : (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_10514 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10515 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10516 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10518 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10517 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_16;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10519 : (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_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10520 : (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_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10521 : (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_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10522 : (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_10519 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10520 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10521 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10523 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10522 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_17;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10524 : (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_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10525 : (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_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10526 : (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_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10527 : (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_10524 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10525 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10526 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10528 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10527 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_18;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10529 : (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_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10530 : (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_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10531 : (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_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10532 : (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_10529 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10530 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10531 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10533 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10532 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_19;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10534 : (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_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10535 : (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_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10536 : (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_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10537 : (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_10534 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10535 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10536 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10538 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10537 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_20;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10539 : (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_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10540 : (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_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10541 : (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_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10542 : (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_10539 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10540 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10541 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10543 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10542 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_21;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10544 : (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_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10545 : (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_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10546 : (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_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10547 : (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_10544 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10545 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10546 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10548 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10547 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_22;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10549 : (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_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10550 : (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_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10551 : (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_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10552 : (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_10549 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10550 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10551 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10553 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10552 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_23;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10554 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10555 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10556 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10557 : (forall X:term, auto_agent X -> auto_knows_old 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_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_10554 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10555 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10556 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10558 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10557 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_24;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10559 : (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_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10560 : (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_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10561 : (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_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10562 : (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_10559 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10560 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10561 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10563 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10562 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_25;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10564 : (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_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10565 : (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_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10566 : (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_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10567 : (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_10564 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10565 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10566 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10568 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10567 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_26;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10569 : (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_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10570 : (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_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10571 : (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_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10572 : (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_10569 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10570 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10571 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_10573 : (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 (noncea_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10572 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_old_27;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10574 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_agent (noncea_old X1 X2 X3) -> auto_knows_old (noncea_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_7126 X1 X2 X3 H);  intros.
  apply (rem_10437 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10444 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10450 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10457 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10463 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10468 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10473 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10478 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10483 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10488 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10493 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10498 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10503 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10508 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10513 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10518 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10523 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10528 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10533 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10538 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10543 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10548 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10553 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10558 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10563 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10568 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10573 epsilon_magent_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_10575 : (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_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10576 : (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_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10577 : (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_10575 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10576 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_10578 : (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_10577 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_10579 : (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_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10580 : (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_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10581 : (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_10579 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10580 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_10582 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 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_10581 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_10583 : (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_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10584 : (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_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10585 : (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_10583 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10584 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_10586 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 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_10585 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_10587 : (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_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10588 : (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_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10589 : (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_10587 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10588 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_10590 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_10589 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_10591 : (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_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10592 : (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_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10593 : (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_10591 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10592 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_10594 : (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_10593 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_crypt_5;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_10595 : (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_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10596 : (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_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10597 : (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_10595 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10596 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_10598 : (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_10597 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_crypt_6;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_10599 : (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_4156 X1 X2 H);  intros.
  apply (rem_10578 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_10582 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_10586 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_10590 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_10594 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_10598 epsilon_magent_pknows_old X1 X2);  tauto.
Defined.

Remark rem_10600 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10462 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_1;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10601 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10467 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_2;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10602 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10477 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_3;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10603 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10482 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_4;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10604 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10497 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_5;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10605 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10502 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_6;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10606 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10507 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_7;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10607 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10512 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_8;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10608 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10517 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_9;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10609 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10522 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_10;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10610 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10537 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_11;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10611 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10557 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_12;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10612 : (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 (noncea_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10572 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_noncea_current_13;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_10613 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_agent (noncea_current X1 X2 X3) -> auto_knows_old (noncea_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_4190 X1 X2 X3 H);  intros.
  apply (rem_10600 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10601 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10602 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10603 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10604 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10605 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10606 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10607 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10608 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10609 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10610 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10611 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_10612 epsilon_magent_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_10614 : (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_10430 epsilon_magent_pknows_old X1);  assumption.
  tauto.
Defined.

Remark rem_10615 : (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_10614 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_10616 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1:term, auto__q2 X1 -> auto__q2 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1. intros A1.
  cut (auto__q2 X1). 2:apply (rem_10451 epsilon_magent_pknows_old X1);  assumption.
  tauto.
Defined.

Remark rem_10617 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1:term, auto__q2 X1 -> auto_knows_old (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1. intros A1.
  case (rem_10616 epsilon_magent_pknows_old X1 A1). clear  epsilon_magent_pknows_old A1. intros. apply trans_knows_old_s_2;  tauto.
 clear  epsilon_magent_pknows_old A1. tauto.
Defined.

Remark rem_10618 : (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_4329 X1 H);  intros.
  apply (rem_10615 epsilon_magent_pknows_old X1);  tauto.
  apply (rem_10617 epsilon_magent_pknows_old X1);  tauto.
Defined.

Remark rem_10619 : (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_10620 : (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_10619 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_10621 : (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_7174 H);  intros.
  apply (rem_10620 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_10622 : (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_10619 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_10623 : (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_7177 H);  intros.
  apply (rem_10622 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_10624 : (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_10619 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_10625 : (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_7180 H);  intros.
  apply (rem_10624 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_10626 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_10577 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_10627 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 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_10585 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_cons_2;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_10628 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_10593 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_cons_3;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_10629 : (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_10597 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_cons_4;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_10630 : (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_4333 X1 X2 H);  intros.
  apply (rem_10626 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_10627 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_10628 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_10629 epsilon_magent_pknows_old X1 X2);  tauto.
Defined.

Remark rem_10631 : (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_10619 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_10632 : (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_7188 H);  intros.
  apply (rem_10631 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_10633 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_knows_old intruder. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old.  case (rem_10619 epsilon_magent_pknows_old). clear  epsilon_magent_pknows_old. intros. apply trans_knows_old_intruder_1;  tauto.
 clear  epsilon_magent_pknows_old. tauto.
Defined.

Remark rem_10634 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_agent intruder -> auto_knows_old intruder. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intro H. intros.
  elim (rem_7191 H);  intros.
  apply (rem_10633 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_10635 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 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_10577 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_10636 : (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_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10637 : (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_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10638 : (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_10636 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10637 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_10639 : (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_10638 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_10640 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 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_10581 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_10641 : (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_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10642 : (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_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10643 : (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_10641 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10642 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_10644 : (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_10643 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_10645 : (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_10589 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_10646 : (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_10593 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_10647 : (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_10597 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_10648 : (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_4345 X1 X2 H);  intros.
  apply (rem_10635 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_10639 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_10640 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_10644 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_10645 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_10646 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_10647 epsilon_magent_pknows_old X1 X2);  tauto.
Defined.

Remark rem_10649 : (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_10619 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_10650 : (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_7208 H);  intros.
  apply (rem_10649 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_10651 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_knows_old sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old.  case (rem_10619 epsilon_magent_pknows_old). clear  epsilon_magent_pknows_old. intros. apply trans_knows_old_sym_1;  tauto.
 clear  epsilon_magent_pknows_old. tauto.
Defined.

Remark rem_10652 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_agent sym -> auto_knows_old sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intro H. intros.
  elim (rem_7211 H);  intros.
  apply (rem_10651 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_10653 : (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_10619 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_10654 : (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_7214 H);  intros.
  apply (rem_10653 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_10655 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10656 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10657 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10658 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X4:term, auto__q2 X4 -> auto__q2 X4. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_10659 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10660 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10655 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10656 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10657 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10659 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10661 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10660 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_1;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10662 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10663 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10664 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10665 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10666 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10662 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10663 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10664 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10665 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10667 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10666 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_2;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10668 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10669 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10670 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10671 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X4:term, auto__q3 X4 -> auto__q3 X4. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_10672 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10673 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_10668 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10669 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10670 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10672 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10674 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10673 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_3;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10675 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10676 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10677 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

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

Remark rem_10679 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10680 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10675 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10676 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10677 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10679 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10681 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10680 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_4;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10682 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10683 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10684 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10685 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10686 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_10682 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10683 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10684 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10685 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10687 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10686 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_5;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10688 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10689 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10690 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10691 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10692 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_10688 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10689 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10690 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10691 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10693 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10692 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_6;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10694 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10695 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10696 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10697 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10698 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10694 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10695 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10696 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10697 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10699 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10698 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_7;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10700 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10701 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10702 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10703 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10704 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10700 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10701 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10702 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10703 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10705 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10704 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_8;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10706 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10707 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10708 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10709 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10710 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10706 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10707 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10708 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10709 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10711 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10710 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_9;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10712 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10713 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10714 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10715 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10716 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10712 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10713 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10714 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10715 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10717 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10716 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_10;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10718 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10719 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10720 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10721 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10722 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10718 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10719 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10720 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10721 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10723 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10722 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_11;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10724 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10725 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10726 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10727 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10728 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_10724 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10725 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10726 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10727 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10729 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10728 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_12;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10730 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10731 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10732 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10733 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10734 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_10730 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10731 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10732 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10733 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10735 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10734 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_13;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10736 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10737 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10738 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10739 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10740 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10736 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10737 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10738 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10739 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10741 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10740 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_14;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10742 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10743 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10744 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10745 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10746 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10742 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10743 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10744 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10745 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10747 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10746 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_15;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10748 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10749 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10750 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10751 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10752 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10748 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10749 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10750 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10751 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10753 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10752 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_16;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10754 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10755 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10756 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10757 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10758 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10754 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10755 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10756 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10757 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10759 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10758 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_17;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10760 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10761 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10762 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10763 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10764 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10760 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10761 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10762 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10763 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10765 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10764 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_18;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10766 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10767 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10768 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10769 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10770 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10766 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10767 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10768 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10769 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10771 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10770 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_19;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10772 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10773 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10774 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10775 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10776 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10772 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10773 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10774 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10775 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10777 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10776 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_20;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10778 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10779 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10780 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10781 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10782 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10778 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10779 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10780 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10781 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10783 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10782 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_21;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10784 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10785 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10786 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10787 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10788 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10784 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10785 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10786 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10787 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10789 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10788 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_22;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10790 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10791 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10792 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10793 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10794 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10790 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10791 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10792 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10793 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10795 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10794 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_23;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10796 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10797 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10798 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10799 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10800 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10796 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10797 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10798 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10799 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10801 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10800 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_24;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10802 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10803 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10804 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10805 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10806 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10802 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10803 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10804 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10805 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10807 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10806 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_25;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10808 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10809 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10810 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10811 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10812 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10808 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10809 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10810 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10811 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10813 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10812 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_26;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10814 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10815 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10816 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10817 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10818 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10814 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10815 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10816 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10817 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10819 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10818 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_27;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10820 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10821 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10822 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10823 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10824 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10820 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10821 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10822 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10823 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10825 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10824 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_28;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10826 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10827 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10828 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10829 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10830 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10826 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10827 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10828 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10829 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10831 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10830 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_current_29;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10832 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_current X1 X2 X3 X4) -> auto_knows_old (nonceb_current X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_4382 X1 X2 X3 X4 H);  intros.
  apply (rem_10661 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10667 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10674 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10681 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10687 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10693 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10699 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10705 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10711 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10717 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10723 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10729 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10735 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10741 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10747 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10753 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10759 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10765 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10771 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10777 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10783 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10789 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10795 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10801 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10807 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10813 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10819 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10825 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10831 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
Defined.

Remark rem_10833 : (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_10619 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_10834 : (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_7395 H);  intros.
  apply (rem_10833 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_10835 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10660 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_1;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10836 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10837 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10838 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10839 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10840 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_10836 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10837 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10838 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10839 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10841 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10840 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_2;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10842 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10843 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10844 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10845 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10846 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10842 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10843 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10844 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10845 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10847 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10846 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_3;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10848 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10666 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_4;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10849 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10850 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10851 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10852 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10853 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10849 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10850 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10851 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10852 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10854 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10853 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_5;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10855 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10673 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_6;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10856 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10857 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10858 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10859 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10860 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_10856 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10857 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10858 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10859 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10861 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10860 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_7;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10862 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10863 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10864 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10865 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10866 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_10862 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10863 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10864 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10865 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10867 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10866 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_8;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10868 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10869 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10870 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10871 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10872 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10868 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10869 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10870 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10871 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10873 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10872 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_9;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10874 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10875 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10876 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10877 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10878 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10874 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10875 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10876 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10877 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10879 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10878 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_10;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10880 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10881 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10882 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10883 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10884 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10880 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10881 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10882 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10883 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10885 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10884 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_11;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10886 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10680 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_12;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10887 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10888 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10889 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10890 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10891 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10887 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10888 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10889 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10890 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10892 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10891 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_13;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10893 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10894 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10895 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10896 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10897 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10893 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10894 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10895 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10896 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10898 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10897 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_14;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10899 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10900 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10901 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10902 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10903 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10899 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10900 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10901 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10902 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10904 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10903 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_15;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10905 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10906 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10907 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10908 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10909 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10905 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10906 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10907 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10908 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10910 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10909 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_16;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10911 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10686 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_17;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10912 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10692 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_18;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10913 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10914 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10915 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10916 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10917 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10913 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10914 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10915 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10916 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10918 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10917 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_19;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10919 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10920 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10921 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10922 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10923 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10919 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10920 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10921 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10922 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10924 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10923 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_20;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10925 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10698 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_21;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10926 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10927 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10928 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10929 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10930 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10926 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10927 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10928 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10929 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10931 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10930 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_22;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10932 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10704 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_23;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10933 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10934 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10935 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10936 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10937 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_10933 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10934 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10935 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10936 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10938 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10937 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_24;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10939 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10940 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10941 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10942 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10943 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10939 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10940 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10941 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10942 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10944 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10943 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_25;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10945 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10946 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10947 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10948 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10949 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_10945 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10946 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10947 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10948 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10950 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10949 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_26;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10951 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10710 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_27;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10952 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10953 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10954 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10955 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10956 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10952 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10953 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10954 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10955 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10957 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10956 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_28;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10958 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10716 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_29;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10959 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10960 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10961 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10962 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10963 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10959 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10960 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10961 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10962 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10964 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10963 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_30;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10965 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10966 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10967 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10968 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10969 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_10965 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10966 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10967 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_10968 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10970 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10969 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_31;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10971 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10972 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10973 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10974 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10975 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_10971 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10972 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_10973 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10974 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10976 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10975 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_32;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10977 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10978 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10979 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10980 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10981 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_10977 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10978 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10979 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10980 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10982 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10981 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_33;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10983 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10722 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_34;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10984 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10728 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_35;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10985 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10986 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10987 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10988 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10989 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_10985 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_10986 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_10987 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_10988 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10990 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10989 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_36;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10991 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10992 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10993 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_10994 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_10995 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10991 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_10992 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10993 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_10994 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_10996 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10995 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_37;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_10997 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_10998 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_10999 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11000 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11001 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_10997 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_10998 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_10999 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_11000 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11002 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11001 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_38;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11003 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11004 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11005 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11006 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11007 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_11003 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_11004 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_11005 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_11006 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11008 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11007 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_39;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11009 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10734 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_40;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11010 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11011 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11012 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11013 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11014 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_11010 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_11011 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_11012 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_11013 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11015 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11014 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_41;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11016 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11017 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11018 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11019 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11020 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_11016 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_11017 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_11018 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_11019 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11021 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11020 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_42;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11022 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11023 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11024 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11025 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11026 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_11022 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_11023 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_11024 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_11025 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11027 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11026 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_43;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11028 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11029 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11030 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11031 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11032 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_11028 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_11029 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_11030 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_11031 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11033 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11032 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_44;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11034 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11035 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11036 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11037 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11038 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_11034 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_11035 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_11036 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_11037 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11039 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11038 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_45;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11040 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11041 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11042 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11043 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11044 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_11040 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_11041 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_11042 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_11043 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11045 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11044 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_46;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11046 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10740 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_47;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11047 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10746 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_48;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11048 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11049 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11050 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11051 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11052 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_11048 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_11049 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_11050 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_11051 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11053 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11052 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_49;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11054 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10752 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_50;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11055 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11056 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11057 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11058 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11059 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_11055 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_11056 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_11057 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_11058 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11060 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11059 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_51;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11061 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10758 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_52;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11062 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11063 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11064 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11065 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11066 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_11062 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_11063 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_11064 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_11065 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11067 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11066 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_53;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11068 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11069 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11070 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11071 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11072 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_11068 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_11069 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_11070 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_11071 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11073 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11072 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_54;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11074 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10764 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_55;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11075 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10770 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_56;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11076 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11077 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11078 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11079 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11080 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_11076 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_11077 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_11078 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_11079 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11081 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11080 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_57;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11082 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10776 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_58;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11083 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10782 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_59;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11084 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11085 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11086 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11087 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11088 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_11084 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_11085 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_11086 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_11087 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11089 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11088 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_60;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11090 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10788 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_61;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11091 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10794 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_62;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11092 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11093 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11094 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11095 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11096 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_11092 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_11093 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_11094 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_11095 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11097 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11096 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_63;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11098 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10800 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_64;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11099 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11100 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11101 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11102 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11103 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_11099 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_11100 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_11101 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_11102 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11104 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11103 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_65;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11105 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11106 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_10432 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11107 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11108 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11109 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_11105 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_11106 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_11107 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_11108 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11110 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11109 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_66;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11111 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11112 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11113 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11114 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11115 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_11111 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_11112 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_11113 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_11114 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11116 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11115 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_67;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11117 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11118 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11119 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11120 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11121 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_11117 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_11118 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_11119 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_11120 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11122 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11121 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_68;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11123 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10806 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_69;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11124 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11125 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11126 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11127 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11128 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_11124 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_11125 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_11126 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_11127 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11129 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11128 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_70;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11130 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11131 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11132 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11133 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11134 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_11130 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_11131 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_11132 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_11133 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11135 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11134 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_71;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11136 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10812 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_72;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11137 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11138 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11139 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_10441 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11140 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto__q2 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X4 -> auto__q2 X4). tauto. exact (rem_10658 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11141 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3 /\ auto__q2 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_11137 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_11138 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X3). 2:apply (rem_11139 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X4). 2:apply (rem_11140 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11142 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11141 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_73;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11143 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10818 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_74;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11144 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10824 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_75;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11145 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11146 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11147 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11148 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11149 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_11145 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_11146 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_11147 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_11148 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11150 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11149 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_76;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11151 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_10458 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11152 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11153 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11154 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11155 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_11151 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_11152 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_11153 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_11154 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11156 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11155 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_77;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11157 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11158 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11159 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11160 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11161 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_11157 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_11158 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_11159 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_11160 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11162 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11161 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_78;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11163 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_10430 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11164 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_10453 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11165 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_10447 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11166 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto__q3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X4 -> auto__q3 X4). tauto. exact (rem_10671 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11167 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3 /\ auto__q3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_11163 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_11164 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X3). 2:apply (rem_11165 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X4). 2:apply (rem_11166 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11168 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11167 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_79;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11169 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_10451 epsilon_magent_pknows_old X1).
Defined.

Remark rem_11170 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_10439 epsilon_magent_pknows_old X2).
Defined.

Remark rem_11171 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_10434 epsilon_magent_pknows_old X3).
Defined.

Remark rem_11172 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto__q1 X4. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4.
  cut (auto__q1 X4 -> auto__q1 X4). tauto. exact (rem_10678 epsilon_magent_pknows_old X4).
Defined.

Remark rem_11173 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3 /\ auto__q1 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_11169 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_11170 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q2 X3). 2:apply (rem_11171 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  cut (auto__q1 X4). 2:apply (rem_11172 epsilon_magent_pknows_old X1 X2 X3 X4);  assumption.
  tauto.
Defined.

Remark rem_11174 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_11173 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_80;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11175 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X4 -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_10830 epsilon_magent_pknows_old X1 X2 X3 X4 A1 A2 A3 A4). clear  epsilon_magent_pknows_old A1 A2 A3 A4. intros. apply trans_knows_old_nonceb_old_81;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3 A4. tauto.
Defined.

Remark rem_11176 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3 X4:term, auto_agent (nonceb_old X1 X2 X3 X4) -> auto_knows_old (nonceb_old X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_7738 X1 X2 X3 X4 H);  intros.
  apply (rem_10835 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10841 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10847 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10848 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10854 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10855 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10861 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10867 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10873 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10879 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10885 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10886 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10892 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10898 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10904 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10910 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10911 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10912 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10918 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10924 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10925 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10931 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10932 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10938 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10944 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10950 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10951 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10957 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10958 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10964 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10970 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10976 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10982 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10983 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10984 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10990 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_10996 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11002 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11008 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11009 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11015 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11021 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11027 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11033 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11039 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11045 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11046 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11047 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11053 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11054 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11060 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11061 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11067 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11073 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11074 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11075 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11081 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11082 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11083 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11089 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11090 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11091 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11097 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11098 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11104 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11110 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11116 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11122 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11123 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11129 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11135 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11136 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11142 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11143 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11144 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11150 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11156 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11162 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11168 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11174 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
  apply (rem_11175 epsilon_magent_pknows_old X1 X2 X3 X4);  tauto.
Defined.

Remark rem_11177 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10436 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_1;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11178 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10443 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_2;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11179 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10449 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_3;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11180 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10456 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_4;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11181 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10462 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_5;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11182 : (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_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10467 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_6;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11183 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10472 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_7;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11184 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10477 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_8;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11185 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10482 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_9;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11186 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10487 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_10;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11187 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10492 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_11;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11188 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10497 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_12;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11189 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10502 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_13;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11190 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10507 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_14;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11191 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10512 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_15;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11192 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10517 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_16;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11193 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10522 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_17;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11194 : (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_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10527 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_18;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11195 : (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_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10532 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_19;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11196 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10537 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_20;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11197 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10542 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_21;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11198 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10547 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_22;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11199 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10552 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_23;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11200 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10557 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_24;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11201 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10562 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_25;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11202 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10567 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_26;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11203 : (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 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_10572 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_old_27;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_11204 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_agent (session_old X1 X2 X3) -> auto_knows_old (session_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_7767 X1 X2 X3 H);  intros.
  apply (rem_11177 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11178 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11179 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11180 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11181 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11182 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11183 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11184 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11185 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11186 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11187 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11188 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11189 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11190 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11191 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11192 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11193 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11194 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11195 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11196 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11197 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11198 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11199 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11200 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11201 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11202 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_11203 epsilon_magent_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_11205 : forall X1:term, auto_agent X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_magent_pknows_old 1.
  intro X. case X.
  exact (rem_10654 epsilon_magent_pknows_old ).
  exact (rem_10625 epsilon_magent_pknows_old ).
  intros X1 X2;  exact (rem_10630 epsilon_magent_pknows_old X1 X2).
  intros X1 X2;  exact (rem_10599 epsilon_magent_pknows_old X1 X2).
  exact (rem_10623 epsilon_magent_pknows_old ).
  intros X1 X2;  exact (rem_10648 epsilon_magent_pknows_old X1 X2).
  exact (rem_10621 epsilon_magent_pknows_old ).
  intros X1 X2 X3;  exact (rem_10613 epsilon_magent_pknows_old X1 X2 X3).
  intros X1 X2 X3;  exact (rem_10574 epsilon_magent_pknows_old X1 X2 X3).
  intros X1 X2 X3 X4;  exact (rem_10832 epsilon_magent_pknows_old X1 X2 X3 X4).
  intros X1 X2 X3 X4;  exact (rem_11176 epsilon_magent_pknows_old X1 X2 X3 X4).
  exact (rem_10632 epsilon_magent_pknows_old ).
  exact (rem_10834 epsilon_magent_pknows_old ).
  intros X1;  exact (rem_10618 epsilon_magent_pknows_old X1).
  exact (rem_10650 epsilon_magent_pknows_old ).
  intros X1 X2 X3;  exact (rem_11204 epsilon_magent_pknows_old X1 X2 X3).
  exact (rem_10652 epsilon_magent_pknows_old ).
Qed.

Remark rem_11206 : 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_11205 X1).
Qed.

Remark rem_11207 : forall X1 X2:term, auto__q1 X2 -> auto_agent X1 -> auto_knows_current (cons X1 (cons X2 nil)). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_6279 X1 X2);  tauto.
  apply (rem_6293 X1 X2);  tauto.
Qed.

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

Remark rem_11209 : forall X1 X2:term, auto__q2 X2 -> auto_agent X1 -> auto_knows_current (cons X1 (cons X2 nil)). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X1 H); intros.
  apply (rem_11208 X1 X2);  tauto.
  apply (rem_6300 X1 X2);  tauto.
Qed.

Remark rem_11210 : forall X1 X2:term, auto_agent X2 -> auto_agent X1 -> auto_knows_current (cons X1 (cons X2 nil)). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (epsilon_magent_p_q1_p_q2_o X2 H); intros.
  apply (rem_11207 X1 X2);  tauto.
  apply (rem_11209 X1 X2);  tauto.
Qed.

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

Remark rem_11212 : forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6255 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_4;  tauto.
 clear  A1 A2. tauto.
Qed.

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

Remark rem_11214 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6264 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_11215 : forall X1 X2:term, auto__q1 X1 -> auto_knows_current X2 -> auto_knows_current (cons X1 X2). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_mknows_current_p_q1_p_q2_o X2 H); intros.
  apply (rem_11213 X1 X2);  tauto.
  apply (rem_11214 X1 X2);  tauto.
Qed.

Remark rem_11216 : forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6259 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_2;  tauto.
 clear  A1 A2. tauto.
Qed.

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

Remark rem_11218 : forall X1 X2:term, auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6269 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

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

Remark rem_11220 : forall X1 X2:term, auto__q2 X1 -> auto_knows_current X2 -> auto_knows_current (cons X1 X2). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_mknows_current_p_q1_p_q2_o X2 H); intros.
  apply (rem_11217 X1 X2);  tauto.
  apply (rem_11219 X1 X2);  tauto.
Qed.

Remark rem_11221 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (cons X1 X2). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (epsilon_mknows_current_p_q1_p_q2_o X1 H); intros.
  apply (rem_11215 X1 X2);  tauto.
  apply (rem_11220 X1 X2);  tauto.
Qed.

Remark rem_11222 : forall _big_m1 _big_m2:term, auto_knows_current _big_m1 -> auto_knows_current _big_m2 -> auto_knows_current (cons _big_m1 _big_m2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (cons X1 X2)). tauto. exact (rem_11221 X1 X2).
Qed.

Remark rem_11223 : forall X1 X2:term, auto__q2 X1 -> auto__q2 (key prv X2) -> auto_knows_current (key pub X2) -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto_knows_current X1). tauto. exact (rem_520 X1).
Qed.

Remark rem_11224 : forall X1:term, auto__q2 X1 -> auto__q3 prv -> auto_knows_current (key pub X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 prv -> False). tauto.
  exact (rem_1028).
Qed.

Remark rem_11225 : forall X1:term, auto__q3 prv -> auto__q2 X1 -> auto_knows_current (key pub X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q3 prv -> auto_knows_current (key pub X1) -> False). tauto. exact (rem_11224 X1).
Qed.

Remark rem_11226 : forall X1:term, auto__q1 prv -> auto__q3 X1 -> auto_knows_current (key pub X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 prv -> False). tauto.
  exact (rem_1032).
Qed.

Remark rem_11227 : forall X1:term, auto__q1 X1 -> auto__q1 prv -> auto_knows_current (key pub X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 prv -> False). tauto.
  exact (rem_1032).
Qed.

Remark rem_11228 : forall X1:term, auto__q1 prv -> auto__q1 X1 -> auto_knows_current (key pub X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q1 prv -> auto_knows_current (key pub X1) -> False). tauto. exact (rem_11227 X1).
Qed.

Remark rem_11229 : forall X1:term, auto__q1 (key prv X1) -> auto_knows_current (key pub X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_703 prv X1 H);  intros.
  apply (rem_11225 X1);  tauto.
  apply (rem_11226 X1);  tauto.
  apply (rem_11228 X1);  tauto.
Qed.

Remark rem_11230 : forall X2:term, auto__q1 (key prv X2) -> auto_knows_current (key pub X2) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 (key prv X1) -> auto_knows_current (key pub X1) -> False). tauto. exact (rem_11229 X1).
Qed.

Remark rem_11231 : forall X1 X2:term, auto__q1 (key prv X2) -> auto__q3 X1 -> auto_knows_current (key pub X2) -> auto_knows_current X1. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q1 (key prv X2) -> auto_knows_current (key pub X2) -> False). tauto.
  exact (rem_11230 X2).
Qed.

Remark rem_11232 : forall X1 X2:term, auto__q3 X1 -> auto__q1 (key prv X2) -> auto_knows_current (key pub X2) -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 (key prv X2) -> auto__q3 X1 -> auto_knows_current (key pub X2) -> auto_knows_current X1). tauto. exact (rem_11231 X1 X2).
Qed.

Remark rem_11233 : forall X1 X2:term, auto__q1 (key prv X2) -> auto__q2 X1 -> auto_knows_current (key pub X2) -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto_knows_current X1). tauto. exact (rem_520 X1).
Qed.

Remark rem_11234 : forall X1 X2:term, auto__q2 X1 -> auto__q1 (key prv X2) -> auto_knows_current (key pub X2) -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 (key prv X2) -> auto__q2 X1 -> auto_knows_current (key pub X2) -> auto_knows_current X1). tauto. exact (rem_11233 X1 X2).
Qed.

Remark rem_11235 : forall X1 X2:term, auto__q1 X1 -> auto__q3 (key prv X2) -> auto_knows_current (key pub X2) -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_current X1). tauto. exact (rem_1017 X1).
Qed.

Remark rem_11236 : forall X1 X2:term, auto__q1 X1 -> auto__q2 (key prv X2) -> auto_knows_current (key pub X2) -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_current X1). tauto. exact (rem_1017 X1).
Qed.

Remark rem_11237 : forall X1 X2:term, auto__q1 X1 -> auto__q1 (key prv X2) -> auto_knows_current (key pub X2) -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_current X1). tauto. exact (rem_1017 X1).
Qed.

Remark rem_11238 : forall X1 X2:term, auto_knows_current (crypt X1 (key prv X2)) -> auto_knows_current (key pub X2) -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1509 X1 (key prv X2) H);  intros.
  apply (rem_11223 X1 X2);  tauto.
  apply (rem_11232 X1 X2);  tauto.
  apply (rem_11234 X1 X2);  tauto.
  apply (rem_11235 X1 X2);  tauto.
  apply (rem_11236 X1 X2);  tauto.
  apply (rem_11237 X1 X2);  tauto.
Qed.

Remark rem_11239 : forall _big_k _big_m:term, auto_knows_current (crypt _big_m (key prv _big_k)) -> auto_knows_current (key pub _big_k) -> auto_knows_current _big_m. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto_knows_current (crypt X1 (key prv X2)) -> auto_knows_current (key pub X2) -> auto_knows_current X1). tauto. exact (rem_11238 X1 X2).
Qed.

Remark rem_11240 : forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6255 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_11241 : forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6259 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_11242 : forall X1 X2:term, auto__q1 X2 -> auto_knows_current X1 -> auto_knows_current (crypt X1 X2). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_mknows_current_p_q1_p_q2_o X1 H); intros.
  apply (rem_11240 X1 X2);  tauto.
  apply (rem_11241 X1 X2);  tauto.
Qed.

Remark rem_11243 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6264 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  A1 A2. tauto.
Qed.

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

Remark rem_11245 : forall X1 X2:term, auto__q2 X2 -> auto__q2 X1 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6269 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_crypt_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_11246 : forall X1 X2:term, auto__q2 X2 -> auto_knows_current X1 -> auto_knows_current (crypt X1 X2). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (epsilon_mknows_current_p_q1_p_q2_o X1 H); intros.
  apply (rem_11244 X1 X2);  tauto.
  apply (rem_11245 X1 X2);  tauto.
Qed.

Remark rem_11247 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current (crypt X1 X2). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (epsilon_mknows_current_p_q1_p_q2_o X2 H); intros.
  apply (rem_11242 X1 X2);  tauto.
  apply (rem_11246 X1 X2);  tauto.
Qed.

Remark rem_11248 : forall _big_k _big_m:term, auto_knows_current _big_m -> auto_knows_current _big_k -> auto_knows_current (crypt _big_m _big_k). (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_11247 X1 X2).
Qed.

Remark rem_11249 : auto__q2 prv. (* Deduce positive atom. *)
Proof.
   case rem_1. intros. apply trans__q2_prv_1;  tauto.
 tauto.
Qed.

Remark rem_11250 : auto__q2 i. (* Deduce positive atom. *)
Proof.
   case rem_1. intros. apply trans__q2_i_1;  tauto.
 tauto.
Qed.

Remark rem_11251 : (auto__q2 prv /\ auto__q2 i) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   cut (auto__q2 prv). 2:apply rem_11249.
  cut (auto__q2 i). 2:apply rem_11250.
  tauto.
Qed.

Remark rem_11252 : auto_knows_current (key prv i). (* Deduce positive atom. *)
Proof.
   case rem_11251. intros. apply trans_knows_current_key_1;  tauto.
 tauto.
Qed.

Remark rem_11253 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X1 -> auto_knows_old X1). tauto. exact (rem_2491 X1 X2).
Qed.

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

Remark rem_11255 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X1 -> auto_knows_old X1). tauto. exact (rem_2973 X1 X2).
Qed.

Remark rem_11256 : forall X1 X2:term, auto_knows_old (cons X1 X2) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_2974 X1 X2 H);  intros.
  apply (rem_11253 X1 X2);  tauto.
  apply (rem_11254 X1 X2);  tauto.
  apply (rem_2970 X1 X2);  tauto.
  apply (rem_11255 X1 X2);  tauto.
Qed.

Remark rem_11257 : forall _big_m1 _big_m2:term, auto_knows_old (cons _big_m1 _big_m2) -> auto_knows_old _big_m1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old (cons X1 X2) -> auto_knows_old X1). tauto. exact (rem_11256 X1 X2).
Qed.

Remark rem_11258 : auto__q1 bob. (* Deduce positive atom. *)
Proof.
   case rem_1. intros. apply trans__q1_bob_1;  tauto.
 tauto.
Qed.

Remark rem_11259 : (auto__q1 pub /\ auto__q1 bob) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   cut (auto__q1 pub). 2:apply rem_8665.
  cut (auto__q1 bob). 2:apply rem_11258.
  tauto.
Qed.

Remark rem_11260 : auto__q1 (key pub bob). (* Deduce positive atom. *)
Proof.
   case rem_11259. intros. apply trans__q1_key_3;  tauto.
 tauto.
Qed.

Remark rem_11261 : (auto__q1 (key pub bob) /\ auto__q1 bob) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   cut (auto__q1 (key pub bob)). 2:apply rem_11260.
  cut (auto__q1 bob). 2:apply rem_11258.
  tauto.
Qed.

Remark rem_11262 : auto_has_pub_key (key pub bob) bob. (* Deduce positive atom. *)
Proof.
   case rem_11261. intros. apply trans_has_pub_key_1;  tauto.
 tauto.
Qed.

Remark rem_11263 : auto_knows_old (key prv i). (* Deduce positive atom. *)
Proof.
   case rem_11251. intros. apply trans_knows_old_key_1;  tauto.
 tauto.
Qed.

(* [trnp] Proofs of translated source clauses. *)


Lemma lem_alice_agent : auto_agent alice.
Proof.
  
  exact rem_3.
Qed.

Lemma lem_bob_agent : auto_agent bob.
Proof.
  
  exact rem_6149.
Qed.

Lemma lem_server_agent : auto_agent server.
Proof.
  
  exact rem_2.
Qed.

Lemma lem_intruder_agent : auto_agent i.
Proof.
  
  exact rem_1975.
Qed.

Lemma lem_alice_has_pub_key : auto_has_pub_key (key pub alice) alice.
Proof.
  
  exact rem_8670.
Qed.

Lemma lem_bob_has_pub_key : auto_has_pub_key (key pub bob) bob.
Proof.
  
  exact rem_11262.
Qed.

Lemma lem_server_has_pub_key : auto_has_pub_key (key pub server) server.
Proof.
  
  exact rem_8675.
Qed.

Lemma lem_intruder_knows_nil_old : auto_knows_old nil.
Proof.
  
  exact rem_8643.
Qed.

Lemma lem_intruder_can_take_first_components_old : forall _big_m1 _big_m2:term, auto_knows_old (cons _big_m1 _big_m2) -> auto_knows_old _big_m1.
Proof.
   intros _big_m1 _big_m2. intros H1.
  exact (rem_11257 _big_m1 _big_m2
          H1).
Qed.

Lemma lem_intruder_can_take_second_components_old : forall _big_m1 _big_m2:term, auto_knows_old (cons _big_m1 _big_m2) -> auto_knows_old _big_m2.
Proof.
   intros _big_m1 _big_m2. intros H1.
  exact (rem_2976 _big_m1 _big_m2
          H1).
Qed.

Lemma lem_intruder_can_build_pairs_old : forall _big_m1 _big_m2:term, auto_knows_old _big_m1 -> auto_knows_old _big_m2 -> auto_knows_old (cons _big_m1 _big_m2).
Proof.
   intros _big_m1 _big_m2. intros H1 H2.
  exact (rem_8611 _big_m1 _big_m2
          H1
          H2).
Qed.

Lemma lem_intruder_can_encrypt_old : forall _big_k _big_m:term, auto_knows_old _big_m -> auto_knows_old _big_k -> auto_knows_old (crypt _big_m _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_6273 _big_k _big_m
          H1
          H2).
Qed.

Lemma lem_intruder_can_decrypt_if_has_private_key_old : forall _big_k _big_m:term, auto_knows_old (crypt _big_m (key pub _big_k)) -> auto_knows_old (key prv _big_k) -> auto_knows_old _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_6213 _big_k _big_m
          H1
          H2).
Qed.

Lemma lem_intruder_can_decrypt_if_has_public_key_old : forall _big_k _big_m:term, auto_knows_old (crypt _big_m (key prv _big_k)) -> auto_knows_old (key pub _big_k) -> auto_knows_old _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_10429 _big_k _big_m
          H1
          H2).
Qed.

Lemma lem_intruder_can_decrypt_if_has_symmetric_key_old : forall _big_m X:term, auto_knows_old (crypt _big_m (key sym X)) -> auto_knows_old (key sym X) -> auto_knows_old _big_m.
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_8660 _big_m X
          H1
          H2).
Qed.

Lemma lem_intruder_can_compute_successors_old : forall _big_m:term, auto_knows_old _big_m -> auto_knows_old (s _big_m).
Proof.
   intros _big_m. intros H1.
  exact (rem_8664 _big_m
          H1).
Qed.

Lemma lem_intruder_can_compute_predecessors_old : forall _big_m:term, auto_knows_old (s _big_m) -> auto_knows_old _big_m.
Proof.
   intros _big_m. intros H1.
  exact (rem_8682 _big_m
          H1).
Qed.

Lemma lem_alice_asks_server_old : forall _big_a _big_b:term, auto_agent _big_b -> auto_agent _big_a -> auto_knows_old (cons _big_a (cons _big_b nil)).
Proof.
   intros _big_a _big_b. intros H1 H2.
  exact (rem_8622 _big_a _big_b
          H1
          H2).
Qed.

Lemma lem_server_gives_bobs_public_key_to_alice_old : forall _big_a _big_b _big_kb:term, auto_has_pub_key _big_kb _big_b -> auto_knows_old (cons _big_a (cons _big_b nil)) -> auto_knows_old (crypt (cons _big_kb (cons _big_b nil)) (key prv server)).
Proof.
   intros _big_a _big_b _big_kb. intros H1 H2.
  exact (rem_7771 _big_a _big_b _big_kb
          H1
          H2).
Qed.

Lemma lem_alice_sends_msg_to_bob_old : forall _big_a _big_b _big_kPb:term, auto_agent _big_a -> auto_knows_old (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) -> auto_knows_old (crypt (cons (noncea_old _big_a _big_b _big_kPb) (cons _big_a nil)) _big_kPb).
Proof.
   intros _big_a _big_b _big_kPb. intros H1 H2.
  exact (rem_10412 _big_a _big_b _big_kPb
          H1
          H2).
Qed.

Lemma lem_bob_asks_server_old : forall _big_a _big_b:term, auto_agent _big_b -> auto_agent _big_a -> auto_knows_old (cons _big_b (cons _big_a nil)).
Proof.
   intros _big_a _big_b. intros H1 H2.
  exact (rem_8680 _big_a _big_b
          H1
          H2).
Qed.

Lemma lem_server_gives_alices_public_key_to_bob_old : forall _big_a _big_b _big_ka:term, auto_has_pub_key _big_ka _big_a -> auto_knows_old (cons _big_b (cons _big_a nil)) -> auto_knows_old (crypt (cons _big_ka (cons _big_a nil)) (key prv server)).
Proof.
   intros _big_a _big_b _big_ka. intros H1 H2.
  exact (rem_6167 _big_a _big_b _big_ka
          H1
          H2).
Qed.

Lemma lem_bob_answers_alice_with_own_msg_old : forall _big_a _big_b _big_kPa _big_na:term, auto_knows_old (crypt (cons _big_na (cons _big_a nil)) (key pub _big_b)) -> auto_agent _big_b -> auto_knows_old (crypt (cons _big_kPa (cons _big_a nil)) (key prv server)) -> auto_knows_old (crypt (cons _big_na (cons (nonceb_old _big_a _big_b _big_kPa _big_na) (cons _big_b nil))) _big_kPa).
Proof.
   intros _big_a _big_b _big_kPa _big_na. intros H1 H2 H3.
  exact (rem_6148 _big_a _big_b _big_kPa _big_na
          H1
          H2
          H3).
Qed.

Lemma lem_alice_confirms_to_bob_old : forall _big_a _big_b _big_kPb _big_nb:term, auto_knows_old (crypt (cons (noncea_old _big_a _big_b _big_kPb) (cons _big_nb (cons _big_b nil))) (key pub _big_a)) -> auto_knows_old (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) -> auto_knows_old (crypt _big_nb _big_kPb).
Proof.
   intros _big_a _big_b _big_kPb _big_nb. intros H1 H2.
  exact (rem_10130 _big_a _big_b _big_kPb _big_nb
          H1
          H2).
Qed.

Lemma lem_intruder_knows_all_agents_old : forall X:term, auto_agent X -> auto_knows_old X.
Proof.
   intros X. intros H1.
  exact (rem_11206 X
          H1).
Qed.

Lemma lem_intruder_knows_every_public_key_old : forall X:term, auto_knows_old (key pub X).
Proof.
   intros X.
  exact (rem_8687 X).
Qed.

Lemma lem_intruder_knows_own_private_key_old : auto_knows_old (key prv i).
Proof.
  
  exact rem_11263.
Qed.

Lemma lem_intruder_remembers : forall _big_m:term, auto_knows_old _big_m -> auto_knows_current _big_m.
Proof.
   intros _big_m. intros H1.
  exact (rem_8600 _big_m
          H1).
Qed.

Lemma lem_intruder_knows_all_previous_session_keys : forall _big_a _big_b _big_na:term, auto_knows_current (key sym (session_old _big_a _big_b _big_na)).
Proof.
   intros _big_a _big_b _big_na.
  exact (rem_3337 _big_a _big_b _big_na).
Qed.

Lemma lem_intruder_knows_all_previous_noncea : forall _big_a _big_b _big_kPb:term, auto_knows_current (noncea_old _big_a _big_b _big_kPb).
Proof.
   intros _big_a _big_b _big_kPb.
  exact (rem_3160 _big_a _big_b _big_kPb).
Qed.

Lemma lem_intruder_knows_all_previous_nonceb : forall _big_a _big_b _big_kPa _big_na:term, auto_knows_current (nonceb_old _big_a _big_b _big_kPa _big_na).
Proof.
   intros _big_a _big_b _big_kPa _big_na.
  exact (rem_3965 _big_a _big_b _big_kPa _big_na).
Qed.

Lemma lem_intruder_knows_nil_current : auto_knows_current nil.
Proof.
  
  exact rem_6920.
Qed.

Lemma lem_intruder_can_take_first_components_current : forall _big_m1 _big_m2:term, auto_knows_current (cons _big_m1 _big_m2) -> auto_knows_current _big_m1.
Proof.
   intros _big_m1 _big_m2. intros H1.
  exact (rem_7807 _big_m1 _big_m2
          H1).
Qed.

Lemma lem_intruder_can_take_second_components_current : forall _big_m1 _big_m2:term, auto_knows_current (cons _big_m1 _big_m2) -> auto_knows_current _big_m2.
Proof.
   intros _big_m1 _big_m2. intros H1.
  exact (rem_1024 _big_m1 _big_m2
          H1).
Qed.

Lemma lem_intruder_can_build_pairs_current : forall _big_m1 _big_m2:term, auto_knows_current _big_m1 -> auto_knows_current _big_m2 -> auto_knows_current (cons _big_m1 _big_m2).
Proof.
   intros _big_m1 _big_m2. intros H1 H2.
  exact (rem_11222 _big_m1 _big_m2
          H1
          H2).
Qed.

Lemma lem_intruder_can_encrypt_current : forall _big_k _big_m:term, auto_knows_current _big_m -> auto_knows_current _big_k -> auto_knows_current (crypt _big_m _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_11248 _big_k _big_m
          H1
          H2).
Qed.

Lemma lem_intruder_can_decrypt_if_has_private_key_current : forall _big_k _big_m:term, auto_knows_current (crypt _big_m (key pub _big_k)) -> auto_knows_current (key prv _big_k) -> auto_knows_current _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_8642 _big_k _big_m
          H1
          H2).
Qed.

Lemma lem_intruder_can_decrypt_if_has_public_key_current : forall _big_k _big_m:term, auto_knows_current (crypt _big_m (key prv _big_k)) -> auto_knows_current (key pub _big_k) -> auto_knows_current _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_11239 _big_k _big_m
          H1
          H2).
Qed.

Lemma lem_intruder_can_decrypt_if_has_symmetric_key_current : forall _big_m X:term, auto_knows_current (crypt _big_m (key sym X)) -> auto_knows_current (key sym X) -> auto_knows_current _big_m.
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_6232 _big_m X
          H1
          H2).
Qed.

Lemma lem_intruder_can_compute_successors_current : forall _big_m:term, auto_knows_current _big_m -> auto_knows_current (s _big_m).
Proof.
   intros _big_m. intros H1.
  exact (rem_6919 _big_m
          H1).
Qed.

Lemma lem_intruder_can_compute_predecessors_current : forall _big_m:term, auto_knows_current (s _big_m) -> auto_knows_current _big_m.
Proof.
   intros _big_m. intros H1.
  exact (rem_6235 _big_m
          H1).
Qed.

Lemma lem_alice_asks_server_current : forall _big_a _big_b:term, auto_agent _big_b -> auto_agent _big_a -> auto_knows_current (cons _big_a (cons _big_b nil)).
Proof.
   intros _big_a _big_b. intros H1 H2.
  exact (rem_6304 _big_a _big_b
          H1
          H2).
Qed.

Lemma lem_server_gives_bobs_public_key_to_alice_current : forall _big_a _big_b _big_kb:term, auto_has_pub_key _big_kb _big_b -> auto_knows_current (cons _big_a (cons _big_b nil)) -> auto_knows_current (crypt (cons _big_kb (cons _big_b nil)) (key prv server)).
Proof.
   intros _big_a _big_b _big_kb. intros H1 H2.
  exact (rem_7808 _big_a _big_b _big_kb
          H1
          H2).
Qed.

Lemma lem_alice_sends_msg_to_bob_current : forall _big_a _big_b _big_kPb:term, auto_agent _big_a -> auto_knows_current (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) -> auto_knows_current (crypt (cons (noncea_current _big_a _big_b _big_kPb) (cons _big_a nil)) _big_kPb).
Proof.
   intros _big_a _big_b _big_kPb. intros H1 H2.
  exact (rem_10183 _big_a _big_b _big_kPb
          H1
          H2).
Qed.

Lemma lem_bob_asks_server_current : forall _big_a _big_b:term, auto_agent _big_b -> auto_agent _big_a -> auto_knows_current (cons _big_b (cons _big_a nil)).
Proof.
   intros _big_a _big_b. intros H1 H2.
  exact (rem_11211 _big_a _big_b
          H1
          H2).
Qed.

Lemma lem_server_gives_alices_public_key_to_bob_current : forall _big_a _big_b _big_ka:term, auto_has_pub_key _big_ka _big_a -> auto_knows_current (cons _big_b (cons _big_a nil)) -> auto_knows_current (crypt (cons _big_ka (cons _big_a nil)) (key prv server)).
Proof.
   intros _big_a _big_b _big_ka. intros H1 H2.
  exact (rem_6252 _big_a _big_b _big_ka
          H1
          H2).
Qed.

Lemma lem_bob_answers_alice_with_own_msg_current : forall _big_a _big_b _big_kPa _big_na:term, auto_knows_current (crypt (cons _big_na (cons _big_a nil)) (key pub _big_b)) -> auto_agent _big_b -> auto_knows_current (crypt (cons _big_kPa (cons _big_a nil)) (key prv server)) -> auto_knows_current (crypt (cons _big_na (cons (nonceb_current _big_a _big_b _big_kPa _big_na) (cons _big_b nil))) _big_kPa).
Proof.
   intros _big_a _big_b _big_kPa _big_na. intros H1 H2 H3.
  exact (rem_6913 _big_a _big_b _big_kPa _big_na
          H1
          H2
          H3).
Qed.

Lemma lem_alice_confirms_to_bob_current : forall _big_a _big_b _big_kPb _big_nb:term, auto_knows_current (crypt (cons (noncea_current _big_a _big_b _big_kPb) (cons _big_nb (cons _big_b nil))) (key pub _big_a)) -> auto_knows_current (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) -> auto_knows_current (crypt _big_nb _big_kPb).
Proof.
   intros _big_a _big_b _big_kPb _big_nb. intros H1 H2.
  exact (rem_1974 _big_a _big_b _big_kPb _big_nb
          H1
          H2).
Qed.

Lemma lem_intruder_knows_all_agents_current : forall X:term, auto_agent X -> auto_knows_current X.
Proof.
   intros X. intros H1.
  exact (rem_7770 X
          H1).
Qed.

Lemma lem_intruder_knows_every_public_key_current : forall X:term, auto_knows_current (key pub X).
Proof.
   intros X.
  exact (rem_1990 X).
Qed.

Lemma lem_intruder_knows_own_private_key_current : auto_knows_current (key prv i).
Proof.
  
  exact rem_11252.
Qed.

Lemma lem_intruder_knows_alice_msg : forall _big_kPb:term, auto_knows_current (noncea_current alice bob _big_kPb) -> auto___query__intruder_knows_alice_msg.
Proof.
   intros _big_kPb. intros H1.
  exact (rem_7802 _big_kPb
          H1).
Qed.

Lemma lem_intruder_knows_bob_msg : forall _big_kPa _big_na:term, auto_knows_current (nonceb_current alice bob _big_kPa _big_na) -> auto___query__intruder_knows_bob_msg.
Proof.
   intros _big_kPa _big_na. intros H1.
  exact (rem_6981 _big_kPa _big_na
          H1).
Qed.


(* [srcc] Source clauses. *)

Inductive __query__intruder_knows_alice_msg : Prop :=
    intruder_knows_alice_msg : forall _big_kPb:term, knows_current (noncea_current alice bob _big_kPb) -> __query__intruder_knows_alice_msg

with __query__intruder_knows_bob_msg : Prop :=
    intruder_knows_bob_msg : forall _big_kPa _big_na:term, knows_current (nonceb_current alice bob _big_kPa _big_na) -> __query__intruder_knows_bob_msg

with agent : term -> Prop :=
    alice_agent : agent alice
  | bob_agent : agent bob
  | intruder_agent : agent i
  | server_agent : agent server

with has_pub_key : term -> term -> Prop :=
    alice_has_pub_key : has_pub_key (key pub alice) alice
  | bob_has_pub_key : has_pub_key (key pub bob) bob
  | server_has_pub_key : has_pub_key (key pub server) server

with knows_current : term -> Prop :=
    alice_asks_server_current : forall _big_a _big_b:term, agent _big_b -> agent _big_a -> knows_current (cons _big_a (cons _big_b nil))
  | alice_confirms_to_bob_current : forall _big_a _big_b _big_kPb _big_nb:term, knows_current (crypt (cons (noncea_current _big_a _big_b _big_kPb) (cons _big_nb (cons _big_b nil))) (key pub _big_a)) -> knows_current (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) -> knows_current (crypt _big_nb _big_kPb)
  | alice_sends_msg_to_bob_current : forall _big_a _big_b _big_kPb:term, agent _big_a -> knows_current (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) -> knows_current (crypt (cons (noncea_current _big_a _big_b _big_kPb) (cons _big_a nil)) _big_kPb)
  | bob_answers_alice_with_own_msg_current : forall _big_a _big_b _big_kPa _big_na:term, knows_current (crypt (cons _big_na (cons _big_a nil)) (key pub _big_b)) -> agent _big_b -> knows_current (crypt (cons _big_kPa (cons _big_a nil)) (key prv server)) -> knows_current (crypt (cons _big_na (cons (nonceb_current _big_a _big_b _big_kPa _big_na) (cons _big_b nil))) _big_kPa)
  | bob_asks_server_current : forall _big_a _big_b:term, agent _big_b -> agent _big_a -> knows_current (cons _big_b (cons _big_a nil))
  | intruder_can_build_pairs_current : forall _big_m1 _big_m2:term, knows_current _big_m1 -> knows_current _big_m2 -> knows_current (cons _big_m1 _big_m2)
  | intruder_can_compute_predecessors_current : forall _big_m:term, knows_current (s _big_m) -> knows_current _big_m
  | intruder_can_compute_successors_current : forall _big_m:term, knows_current _big_m -> knows_current (s _big_m)
  | intruder_can_decrypt_if_has_private_key_current : forall _big_k _big_m:term, knows_current (crypt _big_m (key pub _big_k)) -> knows_current (key prv _big_k) -> knows_current _big_m
  | intruder_can_decrypt_if_has_public_key_current : forall _big_k _big_m:term, knows_current (crypt _big_m (key prv _big_k)) -> knows_current (key pub _big_k) -> knows_current _big_m
  | intruder_can_decrypt_if_has_symmetric_key_current : forall _big_m X:term, knows_current (crypt _big_m (key sym X)) -> knows_current (key sym X) -> knows_current _big_m
  | intruder_can_encrypt_current : forall _big_k _big_m:term, knows_current _big_m -> knows_current _big_k -> knows_current (crypt _big_m _big_k)
  | intruder_can_take_first_components_current : forall _big_m1 _big_m2:term, knows_current (cons _big_m1 _big_m2) -> knows_current _big_m1
  | intruder_can_take_second_components_current : forall _big_m1 _big_m2:term, knows_current (cons _big_m1 _big_m2) -> knows_current _big_m2
  | intruder_knows_all_agents_current : forall X:term, agent X -> knows_current X
  | intruder_knows_all_previous_noncea : forall _big_a _big_b _big_kPb:term, knows_current (noncea_old _big_a _big_b _big_kPb)
  | intruder_knows_all_previous_nonceb : forall _big_a _big_b _big_kPa _big_na:term, knows_current (nonceb_old _big_a _big_b _big_kPa _big_na)
  | intruder_knows_all_previous_session_keys : forall _big_a _big_b _big_na:term, knows_current (key sym (session_old _big_a _big_b _big_na))
  | intruder_knows_every_public_key_current : forall X:term, knows_current (key pub X)
  | intruder_knows_nil_current : knows_current nil
  | intruder_knows_own_private_key_current : knows_current (key prv i)
  | intruder_remembers : forall _big_m:term, knows_old _big_m -> knows_current _big_m
  | server_gives_alices_public_key_to_bob_current : forall _big_a _big_b _big_ka:term, has_pub_key _big_ka _big_a -> knows_current (cons _big_b (cons _big_a nil)) -> knows_current (crypt (cons _big_ka (cons _big_a nil)) (key prv server))
  | server_gives_bobs_public_key_to_alice_current : forall _big_a _big_b _big_kb:term, has_pub_key _big_kb _big_b -> knows_current (cons _big_a (cons _big_b nil)) -> knows_current (crypt (cons _big_kb (cons _big_b nil)) (key prv server))

with knows_old : term -> Prop :=
    alice_asks_server_old : forall _big_a _big_b:term, agent _big_b -> agent _big_a -> knows_old (cons _big_a (cons _big_b nil))
  | alice_confirms_to_bob_old : forall _big_a _big_b _big_kPb _big_nb:term, knows_old (crypt (cons (noncea_old _big_a _big_b _big_kPb) (cons _big_nb (cons _big_b nil))) (key pub _big_a)) -> knows_old (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) -> knows_old (crypt _big_nb _big_kPb)
  | alice_sends_msg_to_bob_old : forall _big_a _big_b _big_kPb:term, agent _big_a -> knows_old (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) -> knows_old (crypt (cons (noncea_old _big_a _big_b _big_kPb) (cons _big_a nil)) _big_kPb)
  | bob_answers_alice_with_own_msg_old : forall _big_a _big_b _big_kPa _big_na:term, knows_old (crypt (cons _big_na (cons _big_a nil)) (key pub _big_b)) -> agent _big_b -> knows_old (crypt (cons _big_kPa (cons _big_a nil)) (key prv server)) -> knows_old (crypt (cons _big_na (cons (nonceb_old _big_a _big_b _big_kPa _big_na) (cons _big_b nil))) _big_kPa)
  | bob_asks_server_old : forall _big_a _big_b:term, agent _big_b -> agent _big_a -> knows_old (cons _big_b (cons _big_a nil))
  | intruder_can_build_pairs_old : forall _big_m1 _big_m2:term, knows_old _big_m1 -> knows_old _big_m2 -> knows_old (cons _big_m1 _big_m2)
  | intruder_can_compute_predecessors_old : forall _big_m:term, knows_old (s _big_m) -> knows_old _big_m
  | intruder_can_compute_successors_old : forall _big_m:term, knows_old _big_m -> knows_old (s _big_m)
  | intruder_can_decrypt_if_has_private_key_old : forall _big_k _big_m:term, knows_old (crypt _big_m (key pub _big_k)) -> knows_old (key prv _big_k) -> knows_old _big_m
  | intruder_can_decrypt_if_has_public_key_old : forall _big_k _big_m:term, knows_old (crypt _big_m (key prv _big_k)) -> knows_old (key pub _big_k) -> knows_old _big_m
  | intruder_can_decrypt_if_has_symmetric_key_old : forall _big_m X:term, knows_old (crypt _big_m (key sym X)) -> knows_old (key sym X) -> knows_old _big_m
  | intruder_can_encrypt_old : forall _big_k _big_m:term, knows_old _big_m -> knows_old _big_k -> knows_old (crypt _big_m _big_k)
  | intruder_can_take_first_components_old : forall _big_m1 _big_m2:term, knows_old (cons _big_m1 _big_m2) -> knows_old _big_m1
  | intruder_can_take_second_components_old : forall _big_m1 _big_m2:term, knows_old (cons _big_m1 _big_m2) -> knows_old _big_m2
  | intruder_knows_all_agents_old : forall X:term, agent X -> knows_old X
  | intruder_knows_every_public_key_old : forall X:term, knows_old (key pub X)
  | intruder_knows_nil_old : knows_old nil
  | intruder_knows_own_private_key_old : knows_old (key prv i)
  | server_gives_alices_public_key_to_bob_old : forall _big_a _big_b _big_ka:term, has_pub_key _big_ka _big_a -> knows_old (cons _big_b (cons _big_a nil)) -> knows_old (crypt (cons _big_ka (cons _big_a nil)) (key prv server))
  | server_gives_bobs_public_key_to_alice_old : forall _big_a _big_b _big_kb:term, has_pub_key _big_kb _big_b -> knows_old (cons _big_a (cons _big_b nil)) -> knows_old (crypt (cons _big_kb (cons _big_b nil)) (key prv server))
.

(* [srct] Translation from source clauses. *)

Definition translate_auto_has_pub_key_from_has_pub_key (x1 : term) (x2 : term) (pi : has_pub_key x1 x2) : auto_has_pub_key x1 x2 :=
  match pi as pi in has_pub_key x1 x2 return auto_has_pub_key x1 x2 with
    (alice_has_pub_key) => 
      (lem_alice_has_pub_key)
  | (bob_has_pub_key) => 
      (lem_bob_has_pub_key)
  | (server_has_pub_key) => 
      (lem_server_has_pub_key)
  end
.
Definition translate_auto_agent_from_agent (x1 : term) (pi : agent x1) : auto_agent x1 :=
  match pi as pi in agent x1 return auto_agent x1 with
    (alice_agent) => 
      (lem_alice_agent)
  | (bob_agent) => 
      (lem_bob_agent)
  | (intruder_agent) => 
      (lem_intruder_agent)
  | (server_agent) => 
      (lem_server_agent)
  end
.
Fixpoint translate_auto_knows_old_from_knows_old (x1 : term) (pi : knows_old x1) {struct pi} : auto_knows_old x1 :=
  match pi as pi in knows_old x1 return auto_knows_old x1 with
    (alice_asks_server_old _big_a _big_b H1 H2) => 
      (lem_alice_asks_server_old _big_a _big_b
        (translate_auto_agent_from_agent _big_b H1)
        (translate_auto_agent_from_agent _big_a H2))
  | (alice_confirms_to_bob_old _big_a _big_b _big_kPb _big_nb H1 H2) => 
      (lem_alice_confirms_to_bob_old _big_a _big_b _big_kPb _big_nb
        (translate_auto_knows_old_from_knows_old (crypt (cons (noncea_old _big_a _big_b _big_kPb) (cons _big_nb (cons _big_b nil))) (key pub _big_a)) H1)
        (translate_auto_knows_old_from_knows_old (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) H2))
  | (alice_sends_msg_to_bob_old _big_a _big_b _big_kPb H1 H2) => 
      (lem_alice_sends_msg_to_bob_old _big_a _big_b _big_kPb
        (translate_auto_agent_from_agent _big_a H1)
        (translate_auto_knows_old_from_knows_old (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) H2))
  | (bob_answers_alice_with_own_msg_old _big_a _big_b _big_kPa _big_na H1 H2 H3) => 
      (lem_bob_answers_alice_with_own_msg_old _big_a _big_b _big_kPa _big_na
        (translate_auto_knows_old_from_knows_old (crypt (cons _big_na (cons _big_a nil)) (key pub _big_b)) H1)
        (translate_auto_agent_from_agent _big_b H2)
        (translate_auto_knows_old_from_knows_old (crypt (cons _big_kPa (cons _big_a nil)) (key prv server)) H3))
  | (bob_asks_server_old _big_a _big_b H1 H2) => 
      (lem_bob_asks_server_old _big_a _big_b
        (translate_auto_agent_from_agent _big_b H1)
        (translate_auto_agent_from_agent _big_a H2))
  | (intruder_can_build_pairs_old _big_m1 _big_m2 H1 H2) => 
      (lem_intruder_can_build_pairs_old _big_m1 _big_m2
        (translate_auto_knows_old_from_knows_old _big_m1 H1)
        (translate_auto_knows_old_from_knows_old _big_m2 H2))
  | (intruder_can_compute_predecessors_old _big_m H1) => 
      (lem_intruder_can_compute_predecessors_old _big_m
        (translate_auto_knows_old_from_knows_old (s _big_m) H1))
  | (intruder_can_compute_successors_old _big_m H1) => 
      (lem_intruder_can_compute_successors_old _big_m
        (translate_auto_knows_old_from_knows_old _big_m H1))
  | (intruder_can_decrypt_if_has_private_key_old _big_k _big_m H1 H2) => 
      (lem_intruder_can_decrypt_if_has_private_key_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old (crypt _big_m (key pub _big_k)) H1)
        (translate_auto_knows_old_from_knows_old (key prv _big_k) H2))
  | (intruder_can_decrypt_if_has_public_key_old _big_k _big_m H1 H2) => 
      (lem_intruder_can_decrypt_if_has_public_key_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old (crypt _big_m (key prv _big_k)) H1)
        (translate_auto_knows_old_from_knows_old (key pub _big_k) H2))
  | (intruder_can_decrypt_if_has_symmetric_key_old _big_m X H1 H2) => 
      (lem_intruder_can_decrypt_if_has_symmetric_key_old _big_m X
        (translate_auto_knows_old_from_knows_old (crypt _big_m (key sym X)) H1)
        (translate_auto_knows_old_from_knows_old (key sym X) H2))
  | (intruder_can_encrypt_old _big_k _big_m H1 H2) => 
      (lem_intruder_can_encrypt_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old _big_m H1)
        (translate_auto_knows_old_from_knows_old _big_k H2))
  | (intruder_can_take_first_components_old _big_m1 _big_m2 H1) => 
      (lem_intruder_can_take_first_components_old _big_m1 _big_m2
        (translate_auto_knows_old_from_knows_old (cons _big_m1 _big_m2) H1))
  | (intruder_can_take_second_components_old _big_m1 _big_m2 H1) => 
      (lem_intruder_can_take_second_components_old _big_m1 _big_m2
        (translate_auto_knows_old_from_knows_old (cons _big_m1 _big_m2) H1))
  | (intruder_knows_all_agents_old X H1) => 
      (lem_intruder_knows_all_agents_old X
        (translate_auto_agent_from_agent X H1))
  | (intruder_knows_every_public_key_old X) => 
      (lem_intruder_knows_every_public_key_old X)
  | (intruder_knows_nil_old) => 
      (lem_intruder_knows_nil_old)
  | (intruder_knows_own_private_key_old) => 
      (lem_intruder_knows_own_private_key_old)
  | (server_gives_alices_public_key_to_bob_old _big_a _big_b _big_ka H1 H2) => 
      (lem_server_gives_alices_public_key_to_bob_old _big_a _big_b _big_ka
        (translate_auto_has_pub_key_from_has_pub_key _big_ka _big_a H1)
        (translate_auto_knows_old_from_knows_old (cons _big_b (cons _big_a nil)) H2))
  | (server_gives_bobs_public_key_to_alice_old _big_a _big_b _big_kb H1 H2) => 
      (lem_server_gives_bobs_public_key_to_alice_old _big_a _big_b _big_kb
        (translate_auto_has_pub_key_from_has_pub_key _big_kb _big_b H1)
        (translate_auto_knows_old_from_knows_old (cons _big_a (cons _big_b nil)) H2))
  end
.
Fixpoint translate_auto_knows_current_from_knows_current (x1 : term) (pi : knows_current x1) {struct pi} : auto_knows_current x1 :=
  match pi as pi in knows_current x1 return auto_knows_current x1 with
    (alice_asks_server_current _big_a _big_b H1 H2) => 
      (lem_alice_asks_server_current _big_a _big_b
        (translate_auto_agent_from_agent _big_b H1)
        (translate_auto_agent_from_agent _big_a H2))
  | (alice_confirms_to_bob_current _big_a _big_b _big_kPb _big_nb H1 H2) => 
      (lem_alice_confirms_to_bob_current _big_a _big_b _big_kPb _big_nb
        (translate_auto_knows_current_from_knows_current (crypt (cons (noncea_current _big_a _big_b _big_kPb) (cons _big_nb (cons _big_b nil))) (key pub _big_a)) H1)
        (translate_auto_knows_current_from_knows_current (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) H2))
  | (alice_sends_msg_to_bob_current _big_a _big_b _big_kPb H1 H2) => 
      (lem_alice_sends_msg_to_bob_current _big_a _big_b _big_kPb
        (translate_auto_agent_from_agent _big_a H1)
        (translate_auto_knows_current_from_knows_current (crypt (cons _big_kPb (cons _big_b nil)) (key prv server)) H2))
  | (bob_answers_alice_with_own_msg_current _big_a _big_b _big_kPa _big_na H1 H2 H3) => 
      (lem_bob_answers_alice_with_own_msg_current _big_a _big_b _big_kPa _big_na
        (translate_auto_knows_current_from_knows_current (crypt (cons _big_na (cons _big_a nil)) (key pub _big_b)) H1)
        (translate_auto_agent_from_agent _big_b H2)
        (translate_auto_knows_current_from_knows_current (crypt (cons _big_kPa (cons _big_a nil)) (key prv server)) H3))
  | (bob_asks_server_current _big_a _big_b H1 H2) => 
      (lem_bob_asks_server_current _big_a _big_b
        (translate_auto_agent_from_agent _big_b H1)
        (translate_auto_agent_from_agent _big_a H2))
  | (intruder_can_build_pairs_current _big_m1 _big_m2 H1 H2) => 
      (lem_intruder_can_build_pairs_current _big_m1 _big_m2
        (translate_auto_knows_current_from_knows_current _big_m1 H1)
        (translate_auto_knows_current_from_knows_current _big_m2 H2))
  | (intruder_can_compute_predecessors_current _big_m H1) => 
      (lem_intruder_can_compute_predecessors_current _big_m
        (translate_auto_knows_current_from_knows_current (s _big_m) H1))
  | (intruder_can_compute_successors_current _big_m H1) => 
      (lem_intruder_can_compute_successors_current _big_m
        (translate_auto_knows_current_from_knows_current _big_m H1))
  | (intruder_can_decrypt_if_has_private_key_current _big_k _big_m H1 H2) => 
      (lem_intruder_can_decrypt_if_has_private_key_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current (crypt _big_m (key pub _big_k)) H1)
        (translate_auto_knows_current_from_knows_current (key prv _big_k) H2))
  | (intruder_can_decrypt_if_has_public_key_current _big_k _big_m H1 H2) => 
      (lem_intruder_can_decrypt_if_has_public_key_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current (crypt _big_m (key prv _big_k)) H1)
        (translate_auto_knows_current_from_knows_current (key pub _big_k) H2))
  | (intruder_can_decrypt_if_has_symmetric_key_current _big_m X H1 H2) => 
      (lem_intruder_can_decrypt_if_has_symmetric_key_current _big_m X
        (translate_auto_knows_current_from_knows_current (crypt _big_m (key sym X)) H1)
        (translate_auto_knows_current_from_knows_current (key sym X) H2))
  | (intruder_can_encrypt_current _big_k _big_m H1 H2) => 
      (lem_intruder_can_encrypt_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current _big_m H1)
        (translate_auto_knows_current_from_knows_current _big_k H2))
  | (intruder_can_take_first_components_current _big_m1 _big_m2 H1) => 
      (lem_intruder_can_take_first_components_current _big_m1 _big_m2
        (translate_auto_knows_current_from_knows_current (cons _big_m1 _big_m2) H1))
  | (intruder_can_take_second_components_current _big_m1 _big_m2 H1) => 
      (lem_intruder_can_take_second_components_current _big_m1 _big_m2
        (translate_auto_knows_current_from_knows_current (cons _big_m1 _big_m2) H1))
  | (intruder_knows_all_agents_current X H1) => 
      (lem_intruder_knows_all_agents_current X
        (translate_auto_agent_from_agent X H1))
  | (intruder_knows_all_previous_noncea _big_a _big_b _big_kPb) => 
      (lem_intruder_knows_all_previous_noncea _big_a _big_b _big_kPb)
  | (intruder_knows_all_previous_nonceb _big_a _big_b _big_kPa _big_na) => 
      (lem_intruder_knows_all_previous_nonceb _big_a _big_b _big_kPa _big_na)
  | (intruder_knows_all_previous_session_keys _big_a _big_b _big_na) => 
      (lem_intruder_knows_all_previous_session_keys _big_a _big_b _big_na)
  | (intruder_knows_every_public_key_current X) => 
      (lem_intruder_knows_every_public_key_current X)
  | (intruder_knows_nil_current) => 
      (lem_intruder_knows_nil_current)
  | (intruder_knows_own_private_key_current) => 
      (lem_intruder_knows_own_private_key_current)
  | (intruder_remembers _big_m H1) => 
      (lem_intruder_remembers _big_m
        (translate_auto_knows_old_from_knows_old _big_m H1))
  | (server_gives_alices_public_key_to_bob_current _big_a _big_b _big_ka H1 H2) => 
      (lem_server_gives_alices_public_key_to_bob_current _big_a _big_b _big_ka
        (translate_auto_has_pub_key_from_has_pub_key _big_ka _big_a H1)
        (translate_auto_knows_current_from_knows_current (cons _big_b (cons _big_a nil)) H2))
  | (server_gives_bobs_public_key_to_alice_current _big_a _big_b _big_kb H1 H2) => 
      (lem_server_gives_bobs_public_key_to_alice_current _big_a _big_b _big_kb
        (translate_auto_has_pub_key_from_has_pub_key _big_kb _big_b H1)
        (translate_auto_knows_current_from_knows_current (cons _big_a (cons _big_b nil)) H2))
  end
.
Definition translate_auto___query__intruder_knows_alice_msg_from___query__intruder_knows_alice_msg (pi : __query__intruder_knows_alice_msg) : auto___query__intruder_knows_alice_msg :=
  match pi  with
    (intruder_knows_alice_msg _big_kPb H1) => 
      (lem_intruder_knows_alice_msg _big_kPb
        (translate_auto_knows_current_from_knows_current (noncea_current alice bob _big_kPb) H1))
  end
.
Definition translate_auto___query__intruder_knows_bob_msg_from___query__intruder_knows_bob_msg (pi : __query__intruder_knows_bob_msg) : auto___query__intruder_knows_bob_msg :=
  match pi  with
    (intruder_knows_bob_msg _big_kPa _big_na H1) => 
      (lem_intruder_knows_bob_msg _big_kPa _big_na
        (translate_auto_knows_current_from_knows_current (nonceb_current alice bob _big_kPa _big_na) H1))
  end
.


(* [conp] Consistency proofs. *)

Theorem thm_intruder_knows_alice_msg : ~__query__intruder_knows_alice_msg.
Proof.
  unfold not. intro H.
  elim (translate_auto___query__intruder_knows_alice_msg_from___query__intruder_knows_alice_msg H).
Qed.

Theorem thm_intruder_knows_bob_msg : ~__query__intruder_knows_bob_msg.
Proof.
  unfold not. intro H.
  elim (translate_auto___query__intruder_knows_bob_msg_from___query__intruder_knows_bob_msg H).
Qed.

