# UserDefinedPartialOrdering SΒΆ

- S: SetCategory

Provides functions to force a partial ordering on any set.

- getOrder: () -> Record(low: List S, high: List S)
`getOrder()`

returns`[[b1, ..., bm], [a1, ..., an]]`

such that the partial ordering on`S`

was given by`setOrder([b1, ..., bm], [a1, ..., an])`

.

- largest: (List S, (S, S) -> Boolean) -> S
`largest(l, fn)`

returns the largest element of`l`

where the partial ordering induced by setOrder is completed into a total one by`fn`

.

- largest: List S -> S if S has OrderedSet
`largest l`

returns the largest element of`l`

where the partial ordering induced by setOrder is completed into a total one by the ordering on`S`

.

- less?: (S, S) -> Union(Boolean, failed)
`less?(a, b)`

compares`a`

and`b`

in the partial ordering induced by setOrder.

- less?: (S, S, (S, S) -> Boolean) -> Boolean
`less?(a, b, fn)`

compares`a`

and`b`

in the partial ordering induced by setOrder, and returns`fn(a, b)`

if`a`

and`b`

are not comparable in that ordering.

- more?: (S, S) -> Boolean if S has OrderedSet
`more?(a, b)`

compares`a`

and`b`

in the partial ordering induced by setOrder, and uses the ordering on`S`

if`a`

and`b`

are not comparable in the partial ordering.

- setOrder: (List S, List S) -> Void
`setOrder([b1, ..., bm], [a1, ..., an])`

defines a partial ordering on`S`

given`by:`

(1)`b1 < b2 < ... < bm < a1 < a2 < ... < an`

. (2)`bj < c < ai`

for`c`

not among the`ai`

`'s`

and`bj`

`'s`

. (3) undefined on`(c, d)`

if neither is among the`ai`

`'s`

,`bj`

`'s`

.