(.using [library [lux (.except) ["_" test (.only Test)] [abstract [monad (.only do)]] [math ["[0]" random (.only Random)]]]] [\\library ["[0]" / (.only) ["/[1]" // (.only) ["[1][0]" check]]]]) (type: Super (Ex (_ sub) [Text sub])) (type: Sub (Super Bit)) (def: .public test Test (<| (_.covering /._) (all _.and (_.coverage [/.Co] (and (//check.subsumes? (type (/.Co Super)) (type (/.Co Sub))) (not (//check.subsumes? (type (/.Co Sub)) (type (/.Co Super)))))) (_.coverage [/.Contra] (and (//check.subsumes? (type (/.Contra Sub)) (type (/.Contra Super))) (not (//check.subsumes? (type (/.Contra Super)) (type (/.Contra Sub)))))) (_.coverage [/.In] (and (//check.subsumes? (type (/.In Super)) (type (/.In Super))) (//check.subsumes? (type (/.In Sub)) (type (/.In Sub))) (not (//check.subsumes? (type (/.In Sub)) (type (/.In Super)))) (not (//check.subsumes? (type (/.In Super)) (type (/.In Sub)))))) )))