Module IR.Subtype
val subtypes_cast : tdenotes the current type and any subtypes
val subtypes_instof : tval join : t -> t -> tval case_analysis : Tenv.t -> (Typ.Name.t * t) -> (Typ.Name.t * t) -> t option * t optioncase_analysis tenv (c1, st1) (c2, st2)performs case analysis onc1 <: c2according tost1andst2.case_analysisreturns a pair:- whether
st1andst2admitc1 <: c2, and in case returns the updated subtypest1 - whether
st1andst2admitnot(c1 <: c2), and in case returns the updated subtypest1
- whether
val is_known_subtype : Tenv.t -> Typ.Name.t -> Typ.Name.t -> boolis_known_subtype tenv c1 c2returns true if there is enough information intenvto prove thatc1is a subtype ofc2. Note thatnot (is_known_subtype tenv c1 c2) == truedoes not imply thatis_known_not_subtype tenv c1 c2 == true