Section observing_relations.
Context {E : Type -> Type} {R : Type}.
Variable (eq_ : itree' E R -> itree' E R -> Prop).
Global Instance observing_observe :
Proper (observing eq_ ==> eq_) (@observe E R).
End observing_relations.
(** ** Unfolding lemmas for [bind] *)

(** Unfolding lemma for [forever]. *)
Lemma unfold_forever_ {E R S} (t: itree E R):
observing eq (@ITree.forever E R S t) (ITree.bind t (fun _ => Tau (ITree.forever t))).