Definition superpose_loop_order (s s': arg)  : Prop :=
   (Included _ (varbound s) (varbound s') /\
     (clause_set_increases (varbound s) (fst s) (fst s') \/
      fst s = fst s' /\ unselected_set_decreases (snd s) (snd s'))).Definition Strict_Included_Fin (U: Type) (x y: Ensemble U) :=
  Strict_Included _ x y /\ Finite _ y.

(* Specifications: *)
Lemma well_founded_Strict_Included_Fin: forall U, well_founded (Strict_Included_Fin U).
Lemma well_founded_superpose_loop_order: well_founded superpose_loop_order.
Lemma clause_bound_delete_resolved: forall n cl, clause_bound' n cl -> clause_bound n (delete_resolved cl).
Lemma pure_bound_norm: forall n e1 e2, expr_bound n e1 -> expr_bound n e2 -> pure_bound n (norm_pure_atom (Eqv e1 e2)).
Lemma pure_bound_rewrite: forall n e1 e2 a, expr_bound n e1 -> expr_bound n e2 -> pure_bound n a -> pure_bound n (rewrite_by e1 e2 a).
Lemma clause_bound_demodulate: forall n c d, clause_bound' n c -> clause_bound' n d -> clause_bound' n (demodulate c d).
Lemma clause_bound'_in: forall ss c, M.In c (M.union (fst ss) (snd ss)) -> clause_bound' (varbound ss) c.
Lemma remove_trivial_atoms_in: forall a pi, List.In a (remove_trivial_atoms pi) -> List.In a pi.
Lemma freshmax_norm: forall a, freshmax_pure_atom (norm_pure_atom a) = freshmax_pure_atom a.