Now I'm a big fan of refinement type. But they don't sit all that well with me because most examples I've seen could be manipulated into ADTs (read the previous post backwards).
Does anyone know of some work that does this manipulation? Or somehow sets some constraints on when you can't express a refinement types using 1,0,+,*, and mu (recursive) types?
Again, my suspicion is that it has to do with regular languages since 1,0,+,*,mu is a #Kleene algebra (right?)