Path sets.

`include Set.S with type elt := path and type t := set`

`add x s`

returns a set containing all elements of `s`

,
plus `x`

. If `x`

was already in `s`

, `s`

is returned unchanged
(the result of the function is then physically equal to `s`

).

- Before 4.03.Physical equality was not ensured.

`remove x s`

returns a set containing all elements of `s`

,
except `x`

. If `x`

was not in `s`

, `s`

is returned unchanged
(the result of the function is then physically equal to `s`

).

- Before 4.03.Physical equality was not ensured.

`iter f s`

applies `f`

in turn to all elements of `s`

.
The elements of `s`

are presented to `f`

in increasing order
with respect to the ordering over the type of the elements.

`map f s`

is the set whose elements are `f a0`

,`f a1`

... ```
f
aN
```

, where `a0`

,`a1`

...`aN`

are the elements of `s`

.

The elements are passed to `f`

in increasing order
with respect to the ordering over the type of the elements.

If no element of `s`

is changed by `f`

, `s`

is returned
unchanged. (If each output of `f`

is physically equal to its
input, the returned set is physically equal to `s`

.)

- Since: 4.04.0

`fold f s a`

computes `(f xN ... (f x2 (f x1 a))...)`

,
where `x1 ... xN`

are the elements of `s`

, in increasing order.

`filter p s`

returns the set of all elements in `s`

that satisfy predicate `p`

. If `p`

satisfies every element in `s`

,
`s`

is returned unchanged (the result of the function is then
physically equal to `s`

).

- Before 4.03.Physical equality was not ensured.

`partition p s`

returns a pair of sets `(s1, s2)`

, where
`s1`

is the set of all the elements of `s`

that satisfy the
predicate `p`

, and `s2`

is the set of all the elements of
`s`

that do not satisfy `p`

.

Return the list of all elements of the given set.
The returned list is sorted in increasing order with respect
to the ordering `Ord.compare`

, where `Ord`

is the argument
given to Set.Make.

Return the smallest element of the given set
(with respect to the `Ord.compare`

ordering), or raise
`Not_found`

if the set is empty.

Return the smallest element of the given set
(with respect to the `Ord.compare`

ordering), or `None`

if the set is empty.

- Since: 4.05

Same as Set.S.min_elt_opt, but returns the largest element of the given set.

- Since: 4.05

Return one element of the given set, or raise `Not_found`

if
the set is empty. Which element is chosen is unspecified,
but equal elements will be chosen for equal sets.

Return one element of the given set, or `None`

if
the set is empty. Which element is chosen is unspecified,
but equal elements will be chosen for equal sets.

- Since: 4.05

`split x s`

returns a triple `(l, present, r)`

, where
`l`

is the set of elements of `s`

that are
strictly less than `x`

;
`r`

is the set of elements of `s`

that are
strictly greater than `x`

;
`present`

is `false`

if `s`

contains no element equal to `x`

,
or `true`

if `s`

contains an element equal to `x`

.

`find x s`

returns the element of `s`

equal to `x`

(according
to `Ord.compare`

), or raise `Not_found`

if no such element
exists.

- Since: 4.01.0

`find_opt x s`

returns the element of `s`

equal to `x`

(according
to `Ord.compare`

), or `None`

if no such element
exists.

- Since: 4.05

`find_first f s`

, where `f`

is a monotonically increasing function,
returns the lowest element `e`

of `s`

such that `f e`

,
or raises `Not_found`

if no such element exists.

For example, `find_first (fun e -> Ord.compare e x >= 0) s`

will return
the first element `e`

of `s`

where `Ord.compare e x >= 0`

(intuitively:
`e >= x`

), or raise `Not_found`

if `x`

is greater than any element of
`s`

.

- Since: 4.05

`find_first_opt f s`

, where `f`

is a monotonically increasing function,
returns an option containing the lowest element `e`

of `s`

such that
`f e`

, or `None`

if no such element exists.

- Since: 4.05

`find_last f s`

, where `f`

is a monotonically decreasing function,
returns the highest element `e`

of `s`

such that `f e`

,
or raises `Not_found`

if no such element exists.

- Since: 4.05

`get_min_let`

is like min_elt but

- Raises Invalid_argument: on the empty set.

`get_max_elt`

is like max_elt but

- Raises Invalid_argument: on the empty set.

`get_any_elt`

is like choose but

- Raises Invalid_argument: on the empty set.

`val pp : ?sep:(Format.formatter ‑> unit ‑> unit) ‑> (Format.formatter ‑> path ‑> unit) ‑> Format.formatter ‑> set ‑> unit`

`pp ~sep pp_elt ppf ps`

formats the elements of `ps`

on
`ppf`

. Each element is formatted with `pp_elt`

and elements are
separated by `~sep`

(defaults to Format.pp_print_cut). If the
set is empty leaves `ppf`

untouched.

`val dump : Format.formatter ‑> set ‑> unit`

`dump ppf ps`

prints an unspecified representation of `ps`

on
`ppf`

.