Section SingleSepPred.
Context (p : B -> A).
Fixpoint iter_sepcon (l : list B) : A :=
match l with
| nil => emp
| x :: xl => p x * iter_sepcon xl
end.
Instance iter_sepcon_permutation_proper : Proper ((pointwise_relation B eq) ==> (@Permutation B) ==> eq) iter_sepcon.
End IterSepCon.

Lemma iter_sepcon_map: forall {A B C: Type} {ND : NatDed A} {SL : SepLog A} (l : list C) (f : B -> A) (g: C -> B),
iter_sepcon (fun x : C => f (g x)) l = iter_sepcon f (map g l).