À mon avis, il y a une erreur, il ne devrait pas y avoir de ok=true; à l'intérieur de la boucle.
Si on enlève ce ok=true (en gardant celui qui est avant la boucle) alors cette ligne sert simplement à mémoriser si la fonction rule a retourné la valeur false au moins une fois.