Section ListFun1'.
Context {A: Type}.
Context {RA: relation A}.
Context {EqRA: Equivalence RA}.
Instance proper_semi_group_fold: forall (f: A -> A -> A) (default: A) {Proper_f: Proper (equiv ==> equiv ==> equiv) f}, Proper (Forall2 equiv ==> equiv) (semi_group_fold default f).
End ListFun1'.

Lemma Forall2_impl: forall {A B: Type} (P Q: A -> B -> Prop),
(forall a b, P a b -> Q a b) ->
(forall (lA: list A) (lB: list B), Forall2 P lA lB -> Forall2 Q lA lB).