The diagram above depicts a state diagram for a board during the auto solve process. During this iterative process each time the operations SetDigit(), UpdateSiblings() and AcceptSingles() cause a new state of the board, valid or invalid (color red). When an invalid state occurs, the solve process returns to the previous state and continues with the next cell candidate.  When there are no more candidates (see R2C1) the solve process returns to  a a previous state as well.  Technically this process is called backtracking.

Examine the following screen shots of the app to get a clear picture how it works. The yellow candidates are accepted singles.