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.