a uniform presentation of these algorithms (Section \[sect:algorithms\]), and conduct a comparison of these algorithms on the basis of which languages they solve (Section \[sect:comparison\]). Our comparison shows, roughly, that the algorithms can be placed into a hierarchy: solvability of a language by AC or LAAC implies solvability by PAC; solvability by PAC in turn implies solvability by SAC (see Section \[sect:comparison\] for precise statements). We also study the strictness of the containments shown. We thus contribute to a basic, foundational understanding of the scope of these algorithms and of the situations in which these algorithms can be demonstrated to be effective.

We then present new tractability results for singleton arc consistency (Section \[sect:tractability\]). We prove that languages having certain types of *2-semilattice polymorphisms* can be solved by singleton arc consistency; and, we prove that any language having a *majority polymorphism* is solvable by singleton arc consistency. The presence of a majority polymorphism is a robust and well-studied condition: majority polymorphisms were used to give some of the initial language tractability results, are known to exactly characterize the languages such that *3-consistency* implies *global consistency* (we refer to [@CCC] for definitions and more details), and gave one of the first 