Can't resolve indirect interface

Solution 1:

I can use

interface BackendRW cpp idr | cpp where

if I don't ask for both implementations at once

negate : Neg idr => BackendRW cpp idr => cpp -> cpp

which presumably means the type checker is freer to find one implementation then the other rather than both at the same time.