Definition fresh {A} (f: A -> var) (a: A) (x: var) : Prop :=  Ident.lt (f a) x.

Lemma list_denote_separate':
forall (X Y: Type) (f: X -> spred) (g: Y -> spred) (base: spred) l1 l2,
list_denote f (@sepcon _ _) (list_denote g (@sepcon _ _) base l2) l1 =
sepcon (list_denote f (@sepcon _ _) emp l1)
(sepcon (list_denote g (@sepcon _ _) emp l2)
base).