(.module: [library [lux #* ["_" test (#+ Test)] [abstract [monad (#+ do)]] [math ["." random (#+ Random)]]]] [\\library ["." / ["/#" // #_ ["#." check]]]]) (type: Super (Ex [sub] [Text sub])) (type: Sub (Super Bit)) (def: .public test Test (<| (_.covering /._) ($_ _.and (_.cover [/.Co] (and (//check.checks? (type (/.Co Super)) (type (/.Co Sub))) (not (//check.checks? (type (/.Co Sub)) (type (/.Co Super)))))) (_.cover [/.Contra] (and (//check.checks? (type (/.Contra Sub)) (type (/.Contra Super))) (not (//check.checks? (type (/.Contra Super)) (type (/.Contra Sub)))))) (_.cover [/.In] (and (//check.checks? (type (/.In Super)) (type (/.In Super))) (//check.checks? (type (/.In Sub)) (type (/.In Sub))) (not (//check.checks? (type (/.In Sub)) (type (/.In Super)))) (not (//check.checks? (type (/.In Super)) (type (/.In Sub)))))) )))