End Generic.
Notation "'{' a ',' b ',' c '}'" := (Tuple _ a b c).
(******************************************************************)
(******************************************************************)
(******************************************************************)
Section NatImplem.
(*  tvar -> nat *)
Definition tvar := nat.
Definition tvcompare : tvar -> tvar -> comparison := natc.
Definition tvarn : tvar -> nat := id.

(* Specifications: *)
Lemma tvcompare_inj v1 v2 : tvarn v1 = tvarn v2 -> v1 = v2.
Definition interm (x : term): K :=
let (z,l) := x in (Z_to_K _ z * {vs[l]})%f.