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.

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).