Proof with auto. rewrite listd_app, listd_unfold_un... Qed.
End ListDenotePred1.
(* insert, insert_uniq, insertion sort *)
Section ListDenoteInsert.
Context {A T : Type}.
Variables (f : A -> T) (g : T -> T -> T) (b : T).
Variable (gS : forall x y, g x y = g y x).
Variable (gA : forall x y z, g x (g y z) = g (g x y) z).

(* Specifications: *)
Lemma listd_insert cmp a l :
listd f g b (insert cmp a l) = g (f a) (listd f g b l).