<> <> DIRECTORY AbSets, BiRels; BiRelsPrivate: CEDAR DEFINITIONS = {OPEN Sets:AbSets, Sets, BiRels; ArgType: TYPE ~ {None, BiRel, Dir, EndBools, limit, RelOrder, RelOrderFN, remove, Set, SetPair, Side, Want3, When}; ArgTyping: TYPE ~ ARRAY [1 .. 2] OF ArgType; What: TYPE ~ {l, r, b}; SortOp: TYPE ~ {asIs, reverse, sort}; EasySort: TYPE ~ SortOp[asIs .. reverse]; HalfCost: TYPE ~ RECORD [qs: PACKED ARRAY What OF ImplQuality _ ALL[primitive]]; Cost: TYPE ~ RECORD [a, b: HalfCost _ [], sort: SortCost _ ALL[asIs]]; SortCost: TYPE ~ PACKED ARRAY Side OF SortOp; Family: TYPE ~ {Empty, EnumSetsTestBR, EnumBRTestSets, REnumBRTestSet, EnumSetImageTestSet}; SubFamily: TYPE ~ {apply, image, scanRestriction, full}; Algorithm: TYPE ~ RECORD [family: Family, s1: Side _ left, sub: SubFamily _ apply]; Analysis: TYPE ~ RECORD [alg: Algorithm, cost: Cost]; SideWhat: ARRAY Side OF What ~ [left: l, right: r]; AB: TYPE ~ {a, b}; PlanDefaultScanRestriction: PROC [br: BiRel, sets: SetPair, ro: RelOrder] RETURNS [can: BOOL, plan: Analysis]; }.