CoreBooleExtras.mesa 
Copyright © 1985 by Xerox Corporation. All rights reversed.
Created by Bertrand Serlet August 13, 1985 5:38:56 pm PDT
Bertrand Serlet January 20, 1986 3:10:48 pm PST
DIRECTORY
Core USING [Wire],
CoreBoole USING [Expression],
Rope USING [ROPE];
CoreBooleExtras: CEDAR DEFINITIONS = BEGIN
Expression: TYPE = CoreBoole.Expression;
Wire: TYPE = Core.Wire;
ROPE: TYPE = Rope.ROPE;
Size: PROC [expr: Expression] RETURNS [size: INT ← 0];
Reorder: PROC [expr: Expression, public: Wire] RETURNS [newExpr: Expression];
ReorderVars: PROC [expr: Expression, vars: LIST OF ROPE] RETURNS [newExpr: Expression];
coreBoolePermuteProp: ATOM;
Not yet fully implemented
Permute: PROC [expr: Expression, public: Wire] RETURNS [bestPermutedExpr: Expression, bestPermutedWire: Wire];
Produces a more efficient internal data structure for expr, keeping the same boolean semantics. The public given may contain the property coreBoolePermuteProp at any level. This property is one of the following:
$Do      -- try all possible permutations. This is the default;
$DoNot,     -- do not try to permute the components of this wire;
$DoNotButDoSons,   -- do not try to permute, but each component may be internally permuted, according to its own properties;
$DoNotApartReverse, -- only reverse permutation may be tried. Sons are permuted, according to their own properties.
The public given may contain wires which are not actually used in expr. The resulting bestPermutedWire is a valid permutation of public which gives a denser representation, and bestPermutedExpr is the denser expression corresponding to bestPermutedWire ordering.
ExprsSeq: TYPE = REF ExprsSeqRec;
ExprsSeqRec: TYPE = RECORD [c: SEQUENCE size: NAT OF Expression];
ReadPLAFile: PUBLIC PROC [fileName: ROPE, inputs, outputs: LIST OF ROPENIL] RETURNS [exprs: ExprsSeq];
END.