<> <> DIRECTORY LichenDataStructure, LichenSetTheory, IO; LichenTransforms: CEDAR DEFINITIONS = BEGIN OPEN LichenDataStructure, LichenSetTheory; IntroCellType: PROC [design: Design] RETURNS [newCT: CellType]; <> <> ExtroCellType: PROC [design: Design, oldCT: CellType]; <> <> Differentiate: PROC [design: Design, instances: Set--of Vertex--] RETURNS [newCT: CellType]; <> <> Undifferentiate: PROC [design: Design, toType, fromType: CellType] RETURNS [changed: Set--of Vertex--]; <> <> LowerChildren: PROC [design: Design, childType: CellType, sibber: Mapper--child RefSeq--role <> <<(dom sibber)=(instances of childType).>> <<>> <<>> <> <<>> <> <<>> <<>> <> <> RaiseGrandchildren: PROC [design: Design, gcs: Set--of Vertex--] RETURNS [childType: CellType, sibber: Mapper--child <> <<>> <> <<(dom sibber) = (instances of childType).>> <<>> <<>> <<>> <<>> <> <> MergeTypes: PROC [design: Design, pairs: OneToOne--instances of from <> <> <> SplitType: PROC [design: Design, fizz: Set--of CellInstance--] RETURNS [from, to: CellType, pairs: OneToOne--instances of from instances of to--]; <> <> <> ExpandType: PROC [design: Design, cellType: CellType] RETURNS [mapper: Mapper--Vertex <> <> <> ExpandVertex: PROC [child: CellInstance] RETURNS [roleToSib: RefSeq--role <> <> ExpandChildren: PROC [design: Design, parent: CellType, flatten: BOOL _ FALSE]; <> Flatten: PROC [root: CellType, expand: Filter--of CellInstance--]; GroupType: PROC [design: Design, mapper: Mapper--any OneToOne--domain of mapper <> <> <> END.