Fixpoint list_denote l : T :=
  match l with nil => b | x :: l' => g (f x) (list_denote l')
  end.Notation "'un'" := (@orp _).

Lemma merge_cons_unfold a1 a2 l1 l2 : merge cmp (a1 :: l1) (a2 :: l2) = match cmp a1 a2 with | Eq => a1 :: merge cmp l1 l2 | Gt => a1 :: merge cmp l1 (a2 :: l2) | Lt => a2 :: merge cmp (a1 :: l1) l2 end.