Proof with simpl; auto.
revert cls0 s; induction l... intros s0 s H1.
assert (H2: forall s, f a s). intros s'. destruct H1 as [H1 H2]. spec H1 s'...
intros D; apply IHl... destruct H1...
Qed.
End FoldLemWeak.

Lemma listd_inter_rev: forall {A B} (f: A -> B -> Prop) l,
listd f inter TT (rev  l) = listd f inter TT l.