(** *** Fresh symbols *)
Fixpoint fresh (l : list nat) :=
match l with
| [] => 0
| x :: l => S x + fresh l
end.

(* Specifications: *)
Lemma fresh_spec' l a : a el l -> a < fresh l.
Lemma fresh_spec (a : symbol) (l : string) : a el l -> fresh l <> a.
Definition SRH '(R, x, a) := exists y, rewt R x y /\ a el y.