package Ġprop Check Ċ Ċ import Ġarrow . Kind Ċ import Ġarrow . core . to T Ċ import Ġarrow . type classes . Monad Ċ import Ġprop Check . ar bitrary . Gen Ċ import Ġprop Check . ar bitrary . fix Ċ import Ġprop Check . ar bitrary . gen . mon ad . mon ad Ċ Ċ fun Ġ< F , ĠA > ĠKind < F , ĠGen < A >> . prom ote ( M : ĠMonad < F >): ĠGen < Kind < F , ĠA >> Ġ= ĠGen . mon ad (). fx . mon ad Ġ{ ĊĠĠĠ Ġval Ġeval Ġ= Ġdelay < A >(). bind () ĊĠĠĠ ĠM . lift ( eval ). invoke ( this @ prom ote ) Ċ }. fix () Ċ Ċ fun Ġ< A > Ġdelay (): ĠGen <( Gen < A >) Ġ-> ĠA > Ġ= ĠGen Ġ{ Ġ( r , Ġn ) Ġ-> ĊĠĠĠ Ġ{ Ġg : ĠGen < A > Ġ-> ĊĠĠĠĠĠĠĠ Ġg . un Gen ( r Ġto T Ġn ) ĊĠĠĠ Ġ} Ċ }