sig   type 'a or_top_bottom = [ `Bottom | `Top | `Value of 'a ]   val join :     ('-> '-> 'a) ->     'Bottom.Top.or_top_bottom ->     'Bottom.Top.or_top_bottom -> 'Bottom.Top.or_top_bottom   val narrow :     ('-> '-> 'a or_bottom) ->     'Bottom.Top.or_top_bottom ->     'Bottom.Top.or_top_bottom -> 'Bottom.Top.or_top_bottom end