lem

Lem is a tool for lightweight executable mathematics
Module Pmap
type ('key, +'a) map
val empty : ( 'key -> 'key -> int ) -> ( 'key, 'a ) map
val is_empty : ( 'key, 'a ) map -> bool
val mem : 'key -> ( 'key, 'a ) map -> bool
val add : 'key -> 'a -> ( 'key, 'a ) map -> ( 'key, 'a ) map
val singleton : ( 'key -> 'key -> int ) -> 'key -> 'a -> ( 'key, 'a ) map
val remove : 'key -> ( 'key, 'a ) map -> ( 'key, 'a ) map
val merge : ( 'key -> 'a option -> 'b option -> 'c option ) -> ( 'key, 'a ) map -> ( 'key, 'b ) map -> ( 'key, 'c ) map
val union : ( 'key, 'a ) map -> ( 'key, 'a ) map -> ( 'key, 'a ) map
val compare : ( 'a -> 'a -> int ) -> ( 'key, 'a ) map -> ( 'key, 'a ) map -> int
val equal : ( 'a -> 'a -> bool ) -> ( 'key, 'a ) map -> ( 'key, 'a ) map -> bool
val iter : ( 'key -> 'a -> unit ) -> ( 'key, 'a ) map -> unit
val fold : ( 'key -> 'a -> 'b -> 'b ) -> ( 'key, 'a ) map -> 'b -> 'b
val for_all : ( 'key -> 'a -> bool ) -> ( 'key, 'a ) map -> bool
val exist : ( 'key -> 'a -> bool ) -> ( 'key, 'a ) map -> bool
val filter : ( 'key -> 'a -> bool ) -> ( 'key, 'a ) map -> ( 'key, 'a ) map
val partition : ( 'key -> 'a -> bool ) -> ( 'key, 'a ) map -> ( 'key, 'a ) map * ( 'key, 'a ) map
val cardinal : ( 'key, 'a ) map -> int
val bindings_list : ( 'key, 'a ) map -> ('key * 'a) list
val bindings : ( ('key * 'a) -> ('key * 'a) -> int ) -> ( 'key, 'a ) map -> ('key * 'a) Pset.set
val domain : ( 'key, 'a ) map -> 'key Pset.set
val range : ( 'a -> 'a -> int ) -> ( 'key, 'a ) map -> 'a Pset.set
val min_binding : ( 'key, 'a ) map -> 'key * 'a
val max_binding : ( 'key, 'a ) map -> 'key * 'a
val choose : ( 'key, 'a ) map -> 'key * 'a
val split : 'key -> ( 'key, 'a ) map -> ( 'key, 'a ) map * 'a option * ( 'key, 'a ) map
val find : 'key -> ( 'key, 'a ) map -> 'a
val lookup : 'key -> ( 'key, 'a ) map -> 'a option
val map : ( 'a -> 'b ) -> ( 'key, 'a ) map -> ( 'key, 'b ) map
val mapi : ( 'key -> 'a -> 'b ) -> ( 'key, 'a ) map -> ( 'key, 'b ) map
val from_set : ( 'key -> 'v ) -> 'key Pset.set -> ( 'key, 'v ) map