Hint Rewrite apply_heap_app : lngen.
(** *** Exercise: [apply_heap_open]  This function is the [apply_heap] analogue to [subst_exp_open_exp_wrt_exp], commuting the heap-based substitution with the [open_exp_wrt_exp] operation. *)

(* Specifications: *)
Lemma apply_heap_open : forall h e e0,
lc_exp e0 ->
apply_heap h (open e e0)  =
open (apply_heap h e) (apply_heap h e0).