Module Iso

`module Iso: `sig` .. `end``
This module provides an implementation of finite isomorphisms over integers.
Author(s): Michele Sevegnani

`type t `
Type of isomorphisms over integers.

Standard map operations

These functions are described in the standard library.
`val cardinal : `t -> int``
`val empty : `t``
`val fold : `(int -> int -> 'b -> 'b) -> t -> 'b -> 'b``
`val is_empty : `t -> bool``
`val iter : `(int -> int -> unit) -> t -> unit``
`val mem : `int -> t -> bool``

`val dom : `t -> int list``
Return the domain of an isomorphism.
`val codom : `t -> int list``
Return the co-domain of an isomorphism.
`val inverse : `t -> t``
Return the inverse of an isomorphism.
`val add : `int -> int -> t -> t``
`add i j iso` adds a new pair `(i, j)` to isomorphism `iso`. If `i` or `j` are already bound in `iso`, `iso` is returned unmodified.
`val to_list : `t -> (int * int) list``
Return the list of pairs defined by an isomorphism.
`val of_list : `(int * int) list -> t``
`of_list l` returns an isomorphism with the elements in list `l`. In case of conflicting pairs, the left-most is added to the isomorphism.
`val to_string : `t -> string``
Return the string representation of an isomorphism. Example:

`"{(1, 1), (2, 3), (5, 2)}"`.

`val equal : `t -> t -> bool``
Equality between isomorphisms.
`val compare : `t -> t -> int``
Comparison between isomorphisms.
`val apply : `t -> int -> int option``
`apply iso i` returns the value associated to `i` by isomorphism `iso`.
`val transform : `iso_dom:t -> iso_codom:t -> t -> t``
`transform ~iso_dom ~iso_codom i` returns the isomorphism obtained by applying `iso_dom` and `iso_codom` to the domain and co-domain of `i`, respectively. Entries in `i` that cannot be mapped by either `iso_dom` or `iso_codom` are ignored.
`val gen_isos : `t -> t list -> t list``
`gen_isos iso autos` generates the symmetric isomorphisms of `iso` by using `autos`, a list of automorphisms over the domain of `iso`. Entries in `iso` not mapped by an automorphism are ignored.
`val is_id : `t -> bool``
Returns `true` if an isomorphism is an identity, `false` otherwise.