Figure 1 illustrates the congregation of instruction elements at a node and the resultant rewriting that takes place. CGs congregating at a node to form an instruction. When a CG is associated with every port of a node it can be fired. Even though the CG firing rule takes account of the presence of operands, operators and destinations, it is conceptually as simple as the dataflow rule. As outlined below, this does not preclude the use of non-strict operators or limit parallelism.
Strict operators require all operands to be data.
If, by computation, a condensed or multi-node CG attempts to flow to a strict operand port, the grafting process intervenes to construct a destination CG representing that strict port and sends it to the operand. The grafting process thus facilitates the evaluation of the operand by supplying it with a destination and, in a well-constructed graph, the subsequent evaluation of that operand will result in the production of a CG in the appropriate form for the operator. The grafting process, in conjunction with port strictness, ensures that operands are only evaluated when needed. An inverse process called stemming removes destinations from a node to prevent it from firing. Strict operands are consumed in an instruction execution but non-strict operands may be either consumed or propagated.