Module VSD := VSD.

Lemma subst_clause_sound: forall cl i e,
clause_denote (subst_clause i e cl) =
match cl with
| PureClause pa pa' _ _ =>
clause_denote (mkPureClause (subst_pures_delete i e pa) (subst_pures i e pa'))
| NegSpaceClause pa sa pa' =>
clause_denote (NegSpaceClause (subst_pures_delete i e pa) (subst_spaces i e sa) (subst_pures i e pa'))
| PosSpaceClause pa pa' sa' =>
clause_denote (PosSpaceClause (subst_pures_delete i e pa) (subst_pures i e pa') (subst_spaces i e sa'))
end.