(** Renaming and substitution *)

(* Specifications: *)
Lemma ren_subst_t {b : logic} rho x t s :
ren_t rho (subst_t x t s) = subst_t x (ren_t rho t) (ren_t rho s).
Lemma ren_subst {b : logic} rho x t phi : vars_t t = [] ->
ren rho (subst x t phi) = subst x (ren_t rho t) (ren rho phi).
Lemma ren_swap_ctx {b : logic} x y rho B : fresh x (consts_l B) ->
ren_ctx (rho[[x := rho y]] ∘ (y :-> x)) B = ren_ctx rho B.