Rex Programmer's Manual
Abstract:
This manual describes Rex, a programming language for specifying machines by dedara tively describing their behavior. The Rex language consists of a set of LISP functions that define primitive Rex machines and provides methods for building complex machines out of simpler components. A Rex machine is a synchronous abstract device that has inputs, local state, and outputs, all of which are storage locations. Storage locations may be thought of as wires that can be set to certain values and whose values can be read by Rex machines. The value of a storage location is determined by its constraint, some function of the values of a set possibly empty of storage locations. A Rex machine operates by repeatedly computing a mapping from its inputs and current state into its outputs and next state. By hierarchically dividing a large state into small components and specifying their state transitions, we can make the combinatorial explosion work for us 3. The size of the smallest component may vary from implementation to implementation it could be a bit, an integer, or a small enumerated type. The state transitions are described by functions that map tuples of elements of the primitive data types into other tuples. The new value of any given component could, in principle, depend on all of the inputs and the entire current state of the machine, but, in practices, the dependencies are usually local.