End SUBST_SOUND.
Module Subst_Sound (VSD: VERISTAR_DEFS) : SUBST_SOUND with Module VSD := VSD.
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.