Local Open Scope logic.
Definition my_fold_right {A B} (f : B -> A -> A) (a : A):=
fix my_fold_right (l : list B) : A :=
match l with
| [] => a
| b :: t => f b (my_fold_right t)
end.

(* Specifications: *)
Lemma my_fold_right_eq {A B} (f : B -> A -> A) a: my_fold_right f a = fold_right f a.