DIRECTORY Core USING [CellType], Rope USING [ROPE]; CoreBoole: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; Expression: TYPE = Core.CellType; true: READONLY Expression; false: READONLY Expression; Var: PROC [var: ROPE] RETURNS [result: Expression]; Not: PROC [expr: Expression] RETURNS [result: Expression]; And: PROC [expr1, expr2, expr3, expr4, expr5: Expression _ true] RETURNS [result: Expression]; Or: PROC [expr1, expr2, expr3, expr4, expr5: Expression _ false] RETURNS [result: Expression]; Xor: PROC [expr1, expr2, expr3, expr4, expr5: Expression _ false] RETURNS [result: Expression]; Nand: PROC [expr1, expr2, expr3, expr4, expr5: Expression _ true] RETURNS [result: Expression]; Nor: PROC [expr1, expr2, expr3, expr4, expr5: Expression _ false] RETURNS [result: Expression]; AndList: PROC [exprs: LIST OF Expression] RETURNS [result: Expression]; OrList: PROC [exprs: LIST OF Expression] RETURNS [result: Expression]; XorList: PROC [exprs: LIST OF Expression] RETURNS [result: Expression]; NandList: PROC [exprs: LIST OF Expression] RETURNS [result: Expression]; NorList: PROC [exprs: LIST OF Expression] RETURNS [result: Expression]; If: PROC [cond, then, else: Expression] RETURNS [result: Expression]; EvalProc: TYPE = PROC [var: ROPE, expr: Expression] RETURNS [whenTrue, whenFalse: Expression]; ToRopeProc: TYPE = PROC [expr: Expression, deep: INT _ 9] RETURNS [ROPE]; FindVarProc: TYPE = PROC [expr: Expression] RETURNS [var: ROPE]; Eval: EvalProc; ToRope: ToRopeProc; FindVar: FindVarProc; Equal: PROC [expr1, expr2: Expression] RETURNS [BOOL]; END. hCoreBoole.mesa Copyright c 1985 by Xerox Corporation. All rights reversed. Created by Bertrand Serlet July 31, 1985 3:03:17 pm PDT Bertrand Serlet January 20, 1986 4:00:00 pm PST Theory This interface defines the basic functions for manipulating Boolean expressions. Common Types Expression Type Expressions may be: constants among {true, false}; expressions created by Var, gateway between variables and expressions; expressions created by operators such as Not, And, Or, If, etc ... . The public of an Expression contains all the inputs of the Expression, and only the inputs. The structure of this public is flat, and functions returning expressions will generate their own flat public. Constants Operators returning Expressions Case is significant Useful operator computing: Or[And[cond, then], And[Not[cond], else]]. Other operations NIL if no var found Κδ˜– "Cedar" stylešœ™Jšœ Οmœ1™