A Haskell package supporting type-level reasoning