Fixpoint activations (proof_tree : cbv) : list cbv :=
  match proof_tree with
  | cbv_constr lp _ _ => flat_map activations lp
  | cbv_split lp p _ _ => activations p ++ flat_map activations lp
  | cbv_function _ _ p _ _ as p' => p' :: activations p
  end.

Lemma activation_bound_spec : forall proof_tree, wf proof_tree -> forall p, In p (activations proof_tree) -> let (i, s) := rule_subst_of_cbv_function p in term_size (subst s (rhs_of_rule (nth i prog rule_default))) <= activation_bound prog (term_size (proj_left p)).