one and ends the increment. The second and third rule state that adding one to a one bit sets this bit to zero and the increment continues. The fifth rule states that adding one to the most-significant bit sets this bit to zero and yields a new most-significant one bit. We claim that $A \stackrel{*}{\Rightarrow} C$ takes $O(\log(x)) = O({\mathopen|[F]\mathclose|})$ derivation steps.

Rules, similar to the ones above, can be given that decrement the attribute by one. We only have to take a little extra care that the number 0 cannot be decremented.

#### Syntactic rules that sum two numbers.

In this section we use the previous test and increment rules (indicated by =). Assume a nonterminal $A$ with some AVM [${\left[\begin{array}{ll} {\mbox{\sc n}} &[F]\\ {\mbox{\sc m}} &[H] \end{array}\right]}$]{}, where $[F]$ and $[H]$ encode natural number $x$ and $y$, respectively. We present syntactic rules (Table \[Tcovsum\]–\[Tstopsum\]) that derive from this nonterminal $A$ a nonterminal $C$ with AVM [${\left[\begin{array}{ll} {\mbox{\sc n}} &[F']\\ {\mbox{\sc m}} &[H] \end{array}\right]}$]{}, where $[F']$ encodes the natural number $x + y$.

The increment of by is similar to the increment by one. Here, three additional pointers are required: the attributes and point to the bits in and 