(** ** Soundness *)
Definition cast {domain} (eta eta' : nat -> domain) (I : interp eta) : interp eta'.
destruct I; econstructor; eauto.
Defined.

Lemma substconst_sat b (phi : form b) dom eta rho x a d (I : interp dom eta) :
fresh a (consts phi) ->
sat (eta [[a := d]]) (cast _ I) rho (subst x (P a) phi) <->
sat eta I (rho [[ x := d ]]) phi.