Section ListDenote.
Context {A T : Type}.
Variables (f : A -> T) (g : T -> T -> T) (b : T).
Fixpoint list_denote l : T :=
match l with nil => b | x :: l' => g (f x) (list_denote l')
end.
Local Notation "'listd'" := (list_denote).

Lemma listd_fold_right l :
listd l = fold_right (fun x y  => g (f x) y) b l.