{-# LANGUAGE ScopedTypeVariables #-}

foo (f :: (Maybe t -> Int)) =
     undefined

type (((f `ObjectsFUnder` a))) = ConstF f a :/\: f
type   (f `ObjectsFOver`  a)   = f :/\: ConstF f a

type (c `ObjectsUnder` a) = Id c `ObjectsFUnder` a
type (c `ObjectsOver`  a) = Id c `ObjectsFOver`  a

