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

Lemma subst_ksat dom b eta rho (M : @kmodel dom eta ) u (phi : form b) x t :
vars_t t = [] ->
rho ⊩(u,M,eta) (subst x t phi) <-> rho[[x:=eval (I:=world u) rho t]] ⊩(u,M,eta) phi.