Module Absint.SubtypingCheck

Subtype checking

val check_subtype : IR.Tenv.t -> IR.Typ.t -> IR.Typ.t -> bool

check_subtype t1 t2 checks whether t1 is a subtype of t2, given the type environment tenv.

val subtype_case_analysis : IR.Tenv.t -> IR.Exp.t -> IR.Exp.t -> IR.Exp.t option * IR.Exp.t option

subtype_case_analysis tenv tecp1 texp2 performs case analysis on texp1 <: texp2, and returns the updated types in the true and false case, if they are possible