<> <> <> PartialOrders: CEDAR DEFINITIONS = BEGIN PartialOrder: TYPE = REF PartialOrderPrivate; PartialOrderPrivate: TYPE; IsPartialOrder: PROC [REF ANY] RETURNS [BOOL]; NarrowToPartialOrder: PROC [REF ANY] RETURNS [PartialOrder]; Element: TYPE = REF ANY; Vertex: TYPE = REF VertexPrivate; VertexPrivate: TYPE; IsVertex: PROC [REF ANY] RETURNS [BOOL]; NarrowToVertex: PROC [REF ANY] RETURNS [Vertex]; Create: PROC RETURNS [PartialOrder]; Insert: PROC [po: PartialOrder, elt: Element, lesser, greater: Vertex _ NIL] RETURNS [Vertex]; Relate: PROC [po: PartialOrder, lesser, greater: Vertex]; IsSource: PROC [po: PartialOrder, v: Vertex, dir: Direction] RETURNS [BOOL]; Direction: TYPE = {increasing, decreasing}; Consumer: TYPE = PROC [rank: INT, elt: Element, v: Vertex]; <> Enumerate: PROC [po: PartialOrder, direction: Direction, start: Vertex _ NIL, consume: Consumer]; <> <> <> EnumerateNeighbors: PROC [po: PartialOrder, direction: Direction, vertex: Vertex _ NIL, consume: Consumer]; <> <> ComputeDirectDominance: PROC [po: PartialOrder]; EnumerateDirectDominees: PROC [po: PartialOrder, vertex: Vertex _ NIL, consume: Consumer]; END.