Official Production System version 5 

Charles L. Forgy

Inference Engine Tech, Cambridge MA.

Related languages
OPS4 => OPS5   Evolution of
OPS5 => ARIEL   Incorporated features of
OPS5 => ART   Extension of
OPS5 => C5   Implementation
OPS5 => Edison   Implementation
OPS5 => MAGSY   Extension of
OPS5 => OPS5+   Implementation
OPS5 => OPS6   Evolution of
OPS5 => RDL1   Influence
OPS5 => RPL   Influence

  • Porgy, C.L. "OPS5 Users Manual" Department of Computer science, CMU 1979. view details
  • Forgy, Charles L. "OPS5: A Rule-Based Programming System" February, 1981 Department of Computer Science Carnegie-Mellon University view details Abstract: OPS5 is a prograrnming language for pure production Systems. It has been used for research in Expert Systems and in Al. It uses a node-link or attribute-value representation for data. It does not incorporate a particular control or problem-solving strategy; instead, it provides a conflict resolution procedure that allows the user to implement his own strategies. The 0P55 interpreter incorporates efficient algorithms that allow the use of large sets of productions and large data bases. The interpreter provides a variety of debugging tools to help the user develop and maintain large systems. Extract: Introduction and Architecture
    OPS5 is the most recent language development of the Production Systems group at Carnegie-Mellon University. Its predecessors include PSG and PSNLST as well as the earlier members of the OPS family. The languages in the OPS family have been used for practical expert systems, for scientific discovery systems, and for research in Artificial Intelligence and Cognitive Psychology. In the course of developing these programs, many things were learned about how production systems are written, and the OPS languages evolved in response to this new information. OPS5 is consequently a much better language than OPS1. This paper describes the OPS5 lai~guage, explains how control is implemented in an OPS5 production system, and describes some of the features that have been incorporated into the OPS5 interpreter to aid the user in developing and maintaining large systems.

    The Production System Architecture

    OPS5 is programming language for pure~ production systems. A pure production system consists of a set of If-Then statements called productions. The set of all the productions in the system is called the production memoly. The data that the production system processes are kept in a global data base called the working memory. In a pure production system, there is only one working memory and one production memory, and these memories are not partitioned or otherwise structured. In particular, the productions are not divided into subroutines, and working memories are not divided into contexts.

    The production system interpreter executes a production system by performing what is called the recognize-act cycle:

    1. [Match] Evaluate the If parts of all the productions to determine which are satisfied given the current contents of working memory.
    2. [Conflict resolution] Select one production with a satisfied If part. If no productions have satisfied If parts, halt the interpreter.
    3. [Act] Perform the actions specified in the Then part of the selected production.
    4. Go to step 1.

    In the pure production system architecture, the recognize-act cycle is the only control imposed by the interpreter. If the user wants subroutines or other control constructs he programs them.
  • Brownston, L. et al, "Programming Expert Systems in OPS5", A-W 1985. view details
  • Sherman et al, "An OPS5 Primer", comes with OPS5 for DOS view details
  • Vesonder, G.T. "Rule-Based Programming in the Unix System", AT&T Tech J 67(1), 1988. view details
  • Hanson, E. N. "An initial report on the design of Ariel DBMS with an integrated production rule system" ACM SIGMOD Record 18(3) September 1989 pp12-19 view details
  • Hanson. "The design and implementation of the Ariel active database rule system" Technical Report UF-CIS-018-92, CIS Department, University of Florida, Gainesville, FL 32611, 1992 view details
  • Hanson, Eric N. "The Design and Implementation of the Ariel Active Database Rule System" IEEE Transactions On Knowledge And Data Engineering, 8(1) February 1996 pp157-172 view details
  • Dick Grune's Annotated Literature Lists view details Extract: Review of language
    Thomas Cooper, Nancy Wogrin, "Rule-based Programming with OPS5", Morgan Kaufmann Publ., San Mateo, Ca., 1988, pp. 350.
    An OPS5 program has a workspace in which "Working Memory Elements" (WMEs) reside; WMEs are in essence structured values with a time stamp. The program consists of an unordered set of rules, "condition-action pairs". The OPS5 engine goes through a recognize-act cycle. Rule recognition consists of two steps, match and select. The match step matches all WMEs to all conditions, instantiating condition variables by unification, called "inter-element match"; this yields the active set, called "conflict set" here. The select steps select one rule to be performed, using conflict resolution if needed. Conflict resolution involves such criteria as the time stamps of the matched WMEs and the specificity (   length) of the condition. Action include adding, modifying, removing and displaying WMEs, binding values to variables, calling external subroutines and halting the program.
    Lee Brownston, Robert Farrell, Elaine Kant, Nancy Martin, "Programming Expert Systems in OPS5", Addison-Wesley, Reading, Mass., 1985, pp. 471.
    Thorough exposition of condition-action programming (called production systems here), its foundations and applicability. Course text on OPS5 with programming techniques and efficiency considerations. Full explanation of the Rete algorithm. Comparisons with other systems, including MYCIN and LOOPS. Extract: Review of language
    James R. McGraw, "The VAL language: description and analysis", ACM TOPLAS, 4, #1, pp. 44-82. Jan. 1982,

    VAL is a side effect free language, based on expressions and non-recursive functions. Normally the language is single-definition, but in a fairly complex for...do...iter construct redefinition is allowed to handle iteration. Its main features are explained using a single example, quad integration.
    • an OPS5 interpreter in Common LISP