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.