The order of items returned with findall/3 is not correct

I have the following list of statements.

whenever true thenceforth delay(one,_X).
whenever true thenceforth two.
whenever true thenceforth not(three).
whenever true thenceforth not(one).
whenever true thenceforth not(two).
whenever true thenceforth three.
whenever true thenceforth one.
whenever true thenceforth delay(three,_X).
whenever true thenceforth delay(two,_X).

When I use findall/3 to get the list of “conditions” and “consequences” of each statement, the order of the results does not map the order of the statements above. Why?

This is how I try to get the list of “conditions” and “consequences” of the above statements:
findall([Condition, Conclusion], whenever Condition thenceforth Conclusion, All).

The result is the following:
All = [[true, delay(one, _4492)], [true, two], [true, not(three)], [true, three], [true, one], [true, not(one)], [true, not(...)], [true|...], [...|...]].

Which shows that the findall finds the first, the second, the third, then skips the fourth and fifth and goes to the sixth and seventh, before going back to the fourth and fifth.

Why? And how can I ensure I get them in order?

Thanks.

This code does not compile for me. Is this the full source of do you have some import or operator definition?