Definition max_size_image_subst (t : term) (s : variable -> value) : nat :=
  maxl (map value_size (map s (vars_of_term t))).

(* Specifications: *)
Lemma incl_le_max_size_image_subst : forall s t u, incl (vars_of_term t) (vars_of_term u) -> max_size_image_subst t s <= max_size_image_subst u s.
Lemma step_one: forall s t, term_size (subst s t) <= term_size t * (1 + max_size_image_subst t s).
Lemma size_subst_var_le_size_value: forall p s (x:variable) v, v = psubst s p -> In x (vars_of_pattern p) -> value_size (s x) <= value_size v.
Lemma max_size_image_subst_bounded : forall t s, max_size_image_subst t s <= term_size (subst s t).