End EVAL.
Definition hold (k: kind) : rtyp k ->  Prop :=
if k as k0 return (rtyp k0 -> Prop) then fun x  => x else is_true.
Definition eiff (k: kind) : rtyp k -> rtyp k -> Prop :=
if k as k' return rtyp k' -> rtyp k' -> Prop then iff else @eq bool.

(* Specifications: *)
Lemma eiff_refl (k: kind) (x : rtyp k) :
eiff k x x.
Lemma eiff_sym k (x y : rtyp k) : eiff k x y -> eiff k y x.
Lemma eiff_trans k (x y z : rtyp k) : eiff k x y -> eiff k y z -> eiff k x z.
Lemma hold_eiff (k: kind) (x y : rtyp k) :
(hold k x <-> hold k y) <-> eiff k x y.