Definition weight_typenv (e: typenv) : nat :=
  weight_constraints e.(te_typ) e.(te_sub).Definition typassign := positive -> T.t.

Lemma type_uses_complete: forall te xl tyl e, satisf te e -> list_forall2 T.sub (map te xl) tyl -> exists e', type_uses e xl tyl = OK e' /\ satisf te e'.