(** * Weakening *)
Fixpoint ren_t (rho : nat -> nat) t :=
match t with
| V n => V n
| P p => P (rho p)
| t_f b t => t_f b (ren_t rho t)
| t_e => t_e
end.
Fixpoint ren {b : logic} (rho : nat -> nat) phi :=
match phi with
| Pr s t => Pr (ren_t rho s) (ren_t rho t)
| Q => Q
| Fal => Fal
| Impl phi1 phi2 => Impl (ren rho phi1) (ren rho phi2)
| All x phi => All x (ren rho phi)
end.

(* Specifications: *)
Lemma vars_t_ren rho t :
vars_t (ren_t rho t) = vars_t t.