Если мы начнем с 1, мы знаем, что будет перенос, связанный с +1 на RHS, поэтому мы можем записать обратное и оставаться в состоянии, в котором у нас есть перенос. Как только мы потеряем керри, мы не сможем вернуть его и можем вспомнить цифры, которые мы видим. Итак:
q S s q' S'
q0 Z0 0 q1 1Z0 starts with 0, no carry, just copy
q0 Z0 1 q2 0Z0 starts with 1, some carry, copy backwards
q1 x 0 q1 0x no more carry, just copy input
q1 x 1 q1 1x to stack so we can read it off backwards
q1 x # q3 x
q2 x 0 q1 1x still have carry, keep carrying as long
q2 x 1 q2 0x as we keep seeing 1
q2 x # q4 # (go write an extra 1 of we carried all the way)
q3 0x 0 q3 x read back the stack contents, backwards
q3 1x 1 q3 x
q3 Z0 - q5 Z0
q4 x 1 q3 x if the LHS is 1^n, write the extra 1 on RHS
q5 accepting state reachable on empty stack