A programming language in which the programs consist of condition ⇒ action rules; these rules are known as productions or production rules. The programs are processed by an interpreter which repeats the following operations: all rules whose conditions are satisfied are found (rule matching), one of them is selected (conflict resolution), and its action is called (rule firing). Such systems are often known as rule-based systems in artificial intelligence and form the basis of many expert systems.