It's the other way around: RA is a necessary condition to having Slicing (since slicing requires a kind of indexing). RA does not imply slicing though. A sparse 1D matrix (eg: an array implement an as hash set) could be a quick and dirty example of such an RA range that does not allow slicing. Or just plain any range the developer was too lazy to implement slicing...

However, since slicing implies RA, you don't actually have to check for RA if you are checking for slicing, eg: `if (hasSlicing!R && hasLength!R && isFloatingPoint!(ElementType!R))` is fine and not any more complex.
 
Note that the `haslength` part completly irrelevent in the RA <=> Slicing scheme (As far as I can tell anyways).

As for my original opDollar comment... I've lost track of where we are on that one.