AlpsHeur.mesa
Created by Bertrand Serlet, February 27, 1985 11:42:33 am PST
Last edited by serlet June 15, 1985 1:52:05 pm PDT
This program allows high-level operations on tables.
DIRECTORY
AlpsBool, Rope;
AlpsHeur: CEDAR DEFINITIONS =
BEGIN
Alps heart
TableComparisonProc: TYPE = PROC [oldTable, newTable: AlpsBool.TableOfVariables] RETURNS [newIsBetter: BOOL];
ImproveAreaAndDelay: TableComparisonProc;
ImproveSizeAndDelay: TableComparisonProc;
ImproveSize: TableComparisonProc;
ImproveDelay: TableComparisonProc;
AlwaysBetter: TableComparisonProc;
Example: PUBLIC PROC [] RETURNS [table: AlpsBool.TableOfVariables];
ExampleC1MX07A: PUBLIC PROC [] RETURNS [table: AlpsBool.TableOfVariables];
MostUsed: PUBLIC PROC [table: AlpsBool.TableOfVariables] RETURNS [exprs: LIST OF AlpsBool.Expression ← NIL];
EachRestrictionProc: TYPE = PROC [table: AlpsBool.TableOfVariables, expr: AlpsBool.Expression, nb: INT] RETURNS [quit: BOOLFALSE];
InterestProc: TYPE = PROC [table: AlpsBool.TableOfVariables, expr: AlpsBool.Expression] RETURNS [exprIsInteresting: BOOLFALSE];
DefaultInterestProc: InterestProc;
EnumerateRestrictions: PUBLIC PROC [table: AlpsBool.TableOfVariables, eachRestriction: EachRestrictionProc, interestProc: InterestProc ← DefaultInterestProc];
FactorizeBest: PUBLIC PROC [table: AlpsBool.TableOfVariables, better: TableComparisonProc, printLevel: INT ← 2] RETURNS [newTable: AlpsBool.TableOfVariables, ok: BOOL];
AllPermute: PUBLIC PROC [table: AlpsBool.TableOfVariables, better: TableComparisonProc, permutLimit: INT ← 99] RETURNS [newTable: AlpsBool.TableOfVariables];
BestPermute: PUBLIC PROC [table: AlpsBool.TableOfVariables, better: TableComparisonProc] RETURNS [newTable: AlpsBool.TableOfVariables, ok: BOOLFALSE];
FastPermute: PUBLIC PROC [table: AlpsBool.TableOfVariables, better: TableComparisonProc] RETURNS [newTable: AlpsBool.TableOfVariables, ok: BOOLFALSE];
BestPermuteInfinitely: PUBLIC PROC [table: AlpsBool.TableOfVariables, better: TableComparisonProc] RETURNS [newTable: AlpsBool.TableOfVariables];
NbOfUseOfVarInTable: PUBLIC PROC [table: AlpsBool.TableOfVariables, varNb: AlpsBool.VarNb] RETURNS [sigma: INT ← 0];
RemoveAuxVar: PUBLIC PROC [table: AlpsBool.TableOfVariables, better: TableComparisonProc, printLevel: INT ← 2] RETURNS [newTable: AlpsBool.TableOfVariables, ok: BOOL];
Reverse: PUBLIC PROC [table: AlpsBool.TableOfVariables] RETURNS [newTable: AlpsBool.TableOfVariables];
END.