End SUBST_SOUND.
Module Subst_Sound (VSD: VERISTAR_DEFS) : SUBST_SOUND with Module VSD := VSD.
Module VSD := VSD.

Lemma subst_list_denote_sound_intersection : forall (l : list pure_atom) i e B,
list_denote pure_atom_denote (@andp state) B (map (subst_pure i e) l) =
match map (subst_pure i e) l with
| nil => B
| _ :: _ => list_denote pure_atom_denote (@andp state) B (map (subst_pure i e) l)
end.