  Subtyping is a crucial ingredient of session type theory and its
applications, notably to programming language implementations. In this paper,
we study effective ways to check whether a session type is a subtype of another
by applying a characteristic formulae approach to the problem. Our core
contribution is an algorithm to generate a modal mu-calculus formula that
characterises all the supertypes (or subtypes) of a given type. Subtyping
checks can then be off-loaded to model checkers, thus incidentally yielding an
efficient algorithm to check safety of session types, soundly and completely.
We have implemented our theory and compared its cost with other classical
subtyping algorithms.
