reflexive_equal and reflexive_compare functionsmin_binding_inter for maps, min_elt_inter for sets and their max counterpartsdifference and symmetric_difference function to maps (and add difference to WithForeign)diff functions to setsfold_on_nonequal_inter and fold_on_nonequal_union to maps.zarith dependency.Breaking changes:
MakeCustom to MakeCustomMap, added new functor MakeCustomSet. MakeCustomMap changed to take a new argument to specify the 'a value type.MakeCustomHeterogeneous to MakeCustomHeterogeneousMap, added new functor MakeCustomHeterogeneousSet.NODE_WITH_ID.get_id to NODE_WITH_ID.to_int, this allows using instances NODE_WITH_ID directly as a KEY.VALUE to HETEROGENEOUS_VALUE, added a VALUE module type (previously unnamed).min_binding, max_binding, pop_minimum, pop_maximum, min_elt and max_elt to unsigned_min_binding, unsigned_max_binding, pop_unsigned_minimum, pop_unsigned_maximum, unsigned_min_elt and unsigned_max_elt respectively, to clarify that these functions consider negative numbers as larger than positive ones.New features:
MAP_WITH_VALUE which is the same as MAP but with a custom type 'a value instead of just 'a.HashconsedNode, HashconsedSetNode as well as four functors to create hash-consed heterogeneous/homogeneous maps/sets: MakeHashconsedMap, MakeHashconsedSet, MakeHashconsedHeterogeneousMap and MakeHashconsedHeterogeneousSet.0 is the minimal number and -1 the maximal one.fold_on_nonequal_inter and fold_on_nonequal_union to maps.Bug fixes:
NodeWithId wasn't incrementing ids properlyzarith is no longer a dependency, used GCC's __builtin_clz as a faster method of finding an integer's highest bit.pop_minimum and pop_maximum could throw a private exception Dissappeared when using WeakNode.idempotent_subset_domain_forall2 with WeakNode.