Module VSD := VSD.

Lemma subst_list_denote_sound0 : forall {A} (Q : spred -> spred -> spred) (l : list A) (denote: A -> spred) (subst: A -> A) (B:spred), list_denote denote Q B (map subst l) = match l with | nil => B | x :: t => Q (denote (subst x)) (list_denote denote Q B (map subst t)) end.