Definition a_ai_disj (a : atoms) (ai : atomic_imps) :=
  forall i : Int,
  LOOKUP unit i a tt -> forall bs : nf_list, LOOKUP nf_list i ai bs -> False.Definition a_goal_disj (a : atoms) (goal : Int) :=
  LOOKUP unit goal a tt -> False.

(* Specifications: *)
Lemma disjs_insert_ai : forall (i : Int) (b : normal_form) (a : atoms) (ai ai' : atomic_imps), a_ai_disj a ai -> (forall d : unit, ~ LOOKUP unit i a d) -> EQUIV_INS nf_list i (cons b) nf_nil ai ai' -> a_ai_disj a ai'.
Lemma disjs_delete_ai : forall (i : Int) (a a' : atoms) (ai ai' : atomic_imps), a_ai_disj a ai -> EQUIV_INS unit i (fun _ : unit => tt) tt a a' -> EQUIV_DEL nf_list i ai ai' -> a_ai_disj a' ai'.
Lemma goal_disj_insert_a : forall (i goal : Int) (a a' : atoms), a_goal_disj a goal -> (Equal goal i -> False) -> EQUIV_INS unit i (fun _ : unit => tt) tt a a' -> a_goal_disj a' goal.
Lemma disjs_insert_a : forall (i : Int) (a a' : atoms) (ai : atomic_imps), a_ai_disj a ai -> EQUIV_INS unit i (fun _ : unit => tt) tt a a' -> (forall bs : nf_list, ~ LOOKUP nf_list i ai bs) -> a_ai_disj a' ai.