(.require [library [lux (.except) [abstract [monad (.only do)]] [control ["[0]" maybe]] [data [collection ["[0]" list]]] [math ["[0]" random] [number ["n" nat]]] [test ["_" property (.only Test)]]]] [\\library ["[0]" / (.only Apply)]]) (def .public test Test (do random.monad [left random.nat right random.nat] (<| (_.covering /._) (all _.and (_.coverage [/.composite] (let [expected (n.+ left right)] (when (of (/.composite maybe.monad maybe.apply list.apply) on {.#Some (list right)} {.#Some (list (n.+ left))}) {.#Some (list actual)} (n.= expected actual) _ false))) ))))