(.module: [library [lux "*" ["_" test {"+" [Test]}] [abstract [monad {"+" [do]}] [\\specification ["$[0]" equivalence] ["$[0]" hash] ["$[0]" monoid] ["$[0]" codec]]] [control ["[0]" function]] [math ["[0]" random]]]] [\\library ["[0]" /]]) (def: .public test Test (<| (_.covering /._) (do random.monad [value random.bit] ($_ _.and (_.for [/.equivalence] ($equivalence.spec /.equivalence random.bit)) (_.for [/.hash] ($hash.spec /.hash random.bit)) (_.for [/.disjunction] ($monoid.spec /.equivalence /.disjunction random.bit)) (_.for [/.conjunction] ($monoid.spec /.equivalence /.conjunction random.bit)) (_.for [/.codec] ($codec.spec /.equivalence /.codec random.bit)) (_.cover [/.no /.yes] (and (\ /.equivalence = false /.no) (\ /.equivalence = true /.yes))) (_.cover [/.off /.on] (and (\ /.equivalence = false /.off) (\ /.equivalence = true /.on))) (_.cover [/.complement] (and (not (\ /.equivalence = value ((/.complement function.identity) value))) (\ /.equivalence = value ((/.complement not) value)))) ))))