One can generalize symbolic systems by having rules that define transformations for any Mathematica pattern. Often these can be thought of as one-way versions of axioms for operator systems (see page 1172), but applied only once per step (as /. does), rather than in all possible ways (as in a multiway system)—so that the evolution is just given by NestList[#/.rule &, init, t]. The rule x_->f[x,x] then for example generates a balanced binary tree. The pictures below show the patterns of opening and closing parentheses obtained from operator system evolution rules in a few cases.