Let’s say those definitions were a part of MyPackage.jl, a big package that also needs since logical operations.
You write some code using MyPackage.and and MyPackage.not.
Then, one day, the author of MyPackage decides to refactor, and split the codebase into related packages, e.g. grouping all the logical functions into a new package called LogicalOperations, and has MyPackage now use/depend on it. Or maybe not even a new package, but a submodule within the package.
Should the code calling MyPackage.and and MyPackage.not start to error? Should this refactoring be a breaking change?
Or course, you could also say code shouldn’t depend on the internals of other packages, and that if they do they should expect random breakages.
However, not all packages define their API as what they export, and this would be restrictive on what sort of internal reorganizing is allowed.
You could make your module a baremodule if you don’t want base methods to be in scope.