All right, x.isDivisible(by: 0) is false.
And 0.isDivisible(by: x) is true: zero itself is the integer such that multiplying it by the divisor x equals zero.
And now we don't quite know what to do with 0.isDivisible(by: 0), which should be both true and false according to our two general rules.
On such limit points, it can be useful to conventionally choosing one value instead of deciding that the value is undefined. I'd prefer 0.isDivisible(by: 0) to return true: that is because 0 as a divisor looks like a code smell, and because I don't want it to trap. I thus prefer to apply the "0.isDivisible(by: x) is true" rule.
If mathematicians agree, or at least don't roll their eyes, it's even safer to use this convention.