What is R++ ?

R++ is ``rules in C++''. R++ is an extension to C++ that bridges the gap between object-oriented programming and data-driven (rule-based) programming. Programs written in R++ have all the facilities of C++ plus a new programming construct: a rule. A rule is like an ``IF-THEN'' statement, but it sits apart from the procedural code and is triggered automatically upon changes to the data that it monitors. In effect, rules monitor object memory and react when their ``IF'' clause becomes true.

The sample rule shown below expresses a company's policy that employees must retire upon reaching age 65. This rule is defined as a member of class Employee and is triggered whenever an employee's age or status changes.

	rule Employee::retirement_policy {
	   age >= 65  &&
	   status != retired
	=>
	   cout << name << " must retire...";
	}

What are rules useful for?

What are the benefits of R++ ?


How to Obtain R++

There are currently problems in obtaining R++. Lucent has a patent on the technology in R++ but AT&T owns the production version of the software. However, it may be possible for some software vendor to license the rights to R++. This possibility has been investigated in the past, but the AT&T/Lucent breakup and the resulting legal hassles caused problems and the effort was abandoned.


R++ Documents and Articles


The R++ Team

R++ was a result of a collaboration between research and development within AT&T Bell Laboratories, specifically, the Artificial Intelligence Principles Research Department of the Software and Systems Research Center and the Advanced Software Engineering and Information Management Development Department of the Operations Technology Center.

Members of the R++ design and development team (in alphabetical order):


For more information write to Peter F. Patel-Schneider (pfps@research.bell-labs.com)

Updated 22 November 2002 by Peter F. Patel-Schneider