ref:  OPS5 User's Manual, by Charles Forgy, 1981

A production system, PS, is made up of if-then relatonships.

            if (condition)  -->  then (action or function)

The statements containing the if-then clauses can be decomposed
into the left-hand side, LHS, containing the conditions, and the
right-hand-size, RHS, containing the actions.

The conditional elements, CEs, on the LHS, are symbolic representations
of classes and their attributes.  The actions on the, RHS, are
executable function elements, FEs.

The PS algorithm handles the dependency between the conditional
elements, CE, and the functional elements, FE.  The PS algorithm
runs inside the black box between the CEs and FEs.
                  CE --> | box  | --> FE
                         |_WMEs_|  |

The results of the FEs are feedback into the black box.

In lisp style language:

  (p  production_name

    (class-name  (attribute_name  value)  [(^attr  value)  ...])


    (action  class-name  (attribute_name  value) [(^attr  value)  ...])

The lisp style predicates on the LHS define objects, and the
predicates on the RHS are more like functions containing the
objects as arguments; a form of lambda functions.

Sample programs: