sig
  type elt_a
  type elt_b
  type 'a map_a
  type 'a map_b
  type set_a
  type set_b
  val proj_map :
    (SetMap.Projection.elt_a -> SetMap.Projection.elt_b) ->
    'b ->
    ('b -> 'a -> 'b) ->
    'a SetMap.Projection.map_a -> 'b SetMap.Projection.map_b
  val proj_map_monadic :
    'parameters ->
    'method_handler ->
    (SetMap.Projection.elt_a -> SetMap.Projection.elt_b) ->
    'b ->
    ('parameters -> 'method_handler -> 'b -> 'a -> 'method_handler * 'b) ->
    'a SetMap.Projection.map_a ->
    'method_handler * 'b SetMap.Projection.map_b
  val proj_set :
    (SetMap.Projection.elt_a -> SetMap.Projection.elt_b) ->
    SetMap.Projection.set_a -> SetMap.Projection.set_b
  val proj_set_monadic :
    'parameters ->
    'method_handler ->
    ('parameters ->
     'method_handler ->
     SetMap.Projection.elt_a -> 'method_handler * SetMap.Projection.elt_b) ->
    SetMap.Projection.set_a -> 'method_handler * SetMap.Projection.set_b
  val partition_set :
    (SetMap.Projection.elt_a -> SetMap.Projection.elt_b) ->
    SetMap.Projection.set_a ->
    SetMap.Projection.set_a SetMap.Projection.map_b
  val partition_set_monadic :
    'parameters ->
    'method_handler ->
    ('parameters ->
     'method_handler ->
     SetMap.Projection.elt_a -> 'method_handler * SetMap.Projection.elt_b) ->
    SetMap.Projection.set_a ->
    'method_handler * SetMap.Projection.set_a SetMap.Projection.map_b
end