All cell phones must be turned off before the movie will begin.
Oh wait, nobody in the audience has a cell phone. Can the movie begin?
> Without a marble, black cannot evaluate to true. Therefore zero marbles equals “no”
"Is_Black" cannot evaluate to false either, therefore zero marbles equals "yes". But that's wrong too, because it is never evaluated, because there are no marbles to evaluate it on. TRUE is the identity of AND, and ALL is the aggregation of AND, so ALL([]) == TRUE. Put another way:
If you start from a bag with N black marbles and split it up between M bags, can you say that for each new bag, all the marbles in it must be black? Yes, you can. That is, if you find a marble in the bag, it will be black. This still holds even if one bag doesn't happen to get any marbles.
> All cell phones must be turned off before the movie will begin.
> Oh wait, nobody in the audience has a cell phone. Can the movie begin?
That's a really good one. Admittedly, I've never had to actually explain why statements can be vacuously true to anyone. But I'll keep this in mind if I ever have to.
Your proposal would break all of logic and mathematics.
"All marbles in the bag are black" is equivalent to "For all x, if x is a marble and x is in the bag, then x is black". Since the antecedent is false if the bag is empty, the statement is true by material implication.
Black is a property of a marble. Without a marble, black cannot evaluate to true. Therefore zero marbles equals “no”