(** ** Soundness **)
Hint Resolve reach_refl.
Definition kcast domain (eta eta' : nat -> domain) (M : kmodel eta) : kmodel eta'.

Lemma substconst_ksat b dom eta rho (phi : form b) x a d (M : @kmodel dom eta) u :
fresh a (consts phi) ->
rho ⊩(u, kcast (eta [[a := d]]) M, _) (subst x (P a) phi) <->
rho [[ x := d ]] ⊩(u,M,eta) phi.