BatBounded.Sbase_u after bounding constraints have been applied
bounds defines the (min, max) bounds for the bounded range
extract x will return x as a value of type u. A similar result could be achieved with (x :> u)
map f x applies f to x. Returns Some y if x can be converted back to type base_u, otherwise returns None.
map2 f x y applies f to x and y. Returns Some z if x and y can be converted back to type base_u, otherwise returns None.
map_exn f x applies f to x. Returns y if x can be converted back to type base_u, otherwise raise an exception.