(.using [library [lux "*" ["_" test {"+" Test}] [abstract [monad {"+" do}]] [math ["[0]" random {"+" Random}] [number ["n" nat]]]]] [\\library ["[0]" /]]) (def: .public (spec (^open "_#[0]") random) (All (_ a) (-> (/.Hash a) (Random a) Test)) (do random.monad [parameter random subject random] (_.cover [/.Hash] (if (_#= parameter subject) (n.= (_#hash parameter) (_#hash subject)) true))))