Fixpoint foldr s := if s is x :: s' then f x (foldr s') else z0.

(* Specifications: *)
Lemma foldr_cat s1 s2 : foldr f z0 (s1 ++ s2) = foldr f (foldr f z0 s2) s1.
Lemma foldr_map s : foldr f z0 (map h s) = foldr (fun x z => f (h x) z) z0 s.