<<>> <> <> <> <> <<>> <> <> SF: CEDAR DEFINITIONS ~ BEGIN <> Vec: TYPE ~ RECORD [s, f: INTEGER]; minVec: Vec ~ [s: INTEGER.FIRST, f: INTEGER.FIRST]; maxVec: Vec ~ [s: INTEGER.LAST, f: INTEGER.LAST]; zeroVec: Vec ~ [s: 0, f: 0]; NonNegative: PROC [v: Vec] RETURNS [Vec]; Neg: PROC [v: Vec] RETURNS [Vec]; Add: PROC [v1, v2: Vec] RETURNS [Vec]; Sub: PROC [v1, v2: Vec] RETURNS [Vec]; Min: PROC [v1, v2: Vec] RETURNS [Vec]; <> Min3: PROC [v1, v2, v3: Vec] RETURNS [Vec]; Max: PROC [v1, v2: Vec] RETURNS [Vec]; Max3: PROC [v1, v2, v3: Vec] RETURNS [Vec]; <> Eq: PROC [v1, v2: Vec] RETURNS [BOOL]; <> Box: TYPE ~ RECORD [min, max: Vec ¬ zeroVec]; <> <<>> maxBox: Box ~ [min: minVec, max: maxVec]; BoxAction: TYPE ~ PROC [box: Box]; BoxGenerator: TYPE ~ PROC [boxAction: BoxAction]; <<>> Nonempty: PROC [box: Box] RETURNS [BOOL]; <> Empty: PROC [box: Box] RETURNS [BOOL]; Intersect: PROC [box1, box2: Box] RETURNS [Box]; Disjoint: PROC [box1, box2: Box] RETURNS [BOOL]; SizeF: PROC [box: Box] RETURNS [CARDINAL]; SizeS: PROC [box: Box] RETURNS [CARDINAL]; Size: PROC [box: Box] RETURNS [Vec]; Displace: PROC [box: Box, t: Vec] RETURNS [Box]; Inside: PROC [inner, outer: Box] RETURNS [BOOL]; In: PROC [vec: Vec, box: Box] RETURNS [BOOL]; END.