IMap and ISet are Map and Set over integer. The internal structure uses Diet, so a set which contains large intervals and a map which has constant values on large intervals are efficiently represented. Interfaces are similar to the Map and Set in stdlib. Both modules depend on the AvlTree module.
Integers are treated as unsigned int, that is, the sign bit is treated as a normal bit. If it is not desirable, you may want to remove re-definition of operators in the beginning of iMap.ml and iSet.ml.