Basic rules are constructed recursively from update instructions by means of two rule constructors: the sequence constructor and the conditional constructor. Semantics is defined by means of update sets. For each rule R and every state S appropriate for R , we define an update set Updates(R,S) over S . To fire R at S , fire Updates(R,S).