a &gt; b is the same as b &lt; a and I would argue a &gt; b is clearer in this instance by noting the symmetry of the following line:<p><pre><code>    if ( a[smallestSoFar] &gt; a[nextToCheck] ) {
      smallestSoFar = nextToCheck ;
    }
</code></pre>
When a &gt; b then a = b<p>The order of the variables doesn&#x27;t change.<p>The value is called nextToCheck because the article is specifically talking about loop invariants. The value of nextToCheck only makes sense when loop invariant is established prior to the loop and after work has been done in the loop to reestablish the loop invariant.<p>In both of those cases the value in nextToCheck is clearly meant to denote the half open interval [0, nextToCheck) which contains the smallestSoFar.<p>currentComparisonIndex is not the correct name for the loop variable because that name is only accurate after checking the termination condition and prior to incrementing. This is not what the loop invariant states the purpose of nextToCheck is. Therefore you would not have established a proper loop invariant prior to entering your loop. nextToCheck might more fully be called &#x27;nextToCheckAfterTerminationCheck&#x27;<p>Of course this is all meta above the level of the language is self. You could call the variable &#x27;foo&#x27; and of course the code would still function.