Definition all_possible_sub_activation_same_rank (f: function) (lv: list term) : list term :=
  let psa := all_possible_subarguments lv in
  flat_map (fun g => map (fun sa => fapply g sa) psa) (functions_of_prog prog).

Lemma all_possible_sub_activation_same_rank_bound (f: function) (lv: list term) : length (all_possible_sub_activation_same_rank f lv) <= length (functions_of_prog prog) * prodl (map (@term_size _ _ _) lv).