Definition expr_type e tau := HORec (expr_typeF tau) e.Definition etype : Type := list (pred world).

(* Specifications: *)
Lemma with_val_nonexpansive : forall F v, nonexpansive F -> nonexpansive (fun X => with_val v (F X)).
Lemma expr_type_nonexpansive : forall F e, nonexpansive F -> nonexpansive (fun X => (expr_type e (F X))).
Lemma ty_lam_contractive : forall F G, nonexpansive F -> nonexpansive G -> contractive (fun X => ty_lam (F X) (G X)).
Lemma type_at_contractive : forall l F, nonexpansive F -> contractive (fun X => type_at l (F X)).
Lemma ty_ref_contractive : forall F, nonexpansive F -> contractive (fun X => ty_ref (F X)).