import Data.Func
import Data.Functor
import Control.Monad
+import Control.Monad.State
+import Control.Monad.Trans
import ASDS
select` :: (p -> p1) (p r1 -> p2) (sdsl m p1 r1 w1) (sdsr m p2 r w) -> Select sdsl sdsr m p r w | TC p & TC p1 & TC p2 & TC r1 & TC r & TC w & pure m