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_is_function : forall proof_tree p, In p (activations proof_tree) -> exists i s p' t v, p = cbv_function i s p' t v.