Hacker News new | past | comments | ask | show | jobs | submit login

So, I am older than 4 and have a PhD in a logic-related field. BUT. I have to admit that I had trouble answering some of those questions. For example: "How many blue cats are not bouncing" when there are no blue cats on the screen. The game seems to assume that the right answer is zero, but I'm not sure I concur. There is a presupposition there about blue cats being in existence and if there are none on screen, the result is that, regarding blue cats, we don't have the required information to answer it. Better phrase it "How many cats are there on screen that are blue and bouncing?".



While I understand your argument, I think there's value in the ambiguity.

1. Clarifying ambiguity and extrapolating are important logic skills.

2. "How many blue cats are not bouncing" is how people actually talk.


I concur.


It's not ambiguous at all. The statement is perfectly clear. The statement is a contingency, i.e. a statement that is neither valid nor unsatisfiable. (Proof-theoretically: neither p nor not-p is provable. Model-theoretically: some assignment of truth values to p will make it true but not all of them).

It would be a far more valuable lesson to teach children that talking about something doesn't will it into existence so that you can start making meaningful statements about it, like how many of them there were.

It's like tampering with witness testimony: "Witness: Somebody stole my handbag. Police: Do you remember anything about him? Can you describe him?" All of a sudden the witness remembers that the suspect was male, not female, when the witness may not have seen such a thing at all.

...or like a show I recently saw on History Channel about the zombie apocalypse. Harvard Professor on TV: "Well, scientifically speaking, there is nothing to suggest that a zombie apocalypse would be a scenario we will likely ever be facing. But if there were such a thing as a zombie apocalypse then one of the most important things would be hygiene, so as to minimize the risk of infection, which is a fascinating topic that I have published about quite extensively." Reporter: "Oh, really? Tell me more about the hygiene precautions that we need to use in the event of a zombie apocalypse." Harvard professor: Spends the next 10 minutes of screentime talking about zombie hygiene. Dumb idiot in front of TV: "Honey! Come down here! They're talking about the zombie apocalypse on TV! They have a professor from Harvard and everything!" All of a sudden: The zombie apocalypse is a thing.

Conversely: The fact that you can't see something doesn't mean it doesn't exist... (like atoms)! "How many blue cats are there? -> zero." Might sound okay, but "How many atoms are there? -> zero" is quite wrong, since the cats are presumably composed of more than zero atoms but we can't really count them etc etc

So when these kinds of presupposition violations come up, then you should teach your little daughter to go "Huh? What the? I can't answer that!" Because "Huh? What the? I can't answer that!" is actually the right answer!


What about "none" instead of zero?


...doesn't help either.

The problem is that when you ask "How many blue cats are bouncing?" you are stating that blue cats are in existence. So there'd have to be some, not none. There'd have to be a number strictly greater than zero. So zero/none can't be the answer, or you're somehow breaking the rules of the game of logic, or how the computer game is set up.

If, however, you say "How many cats are blue and bouncing?" then the presupposition would only extend so far as to state that cats are in existence, which is reflected on-screen. In that case, it may well be the case that there are zero/no cats that are blue and bouncing.

Let me crossindex something I linked in the other thread:

https://en.wikipedia.org/wiki/Syllogism#Existential_import

When Aristotle describes his logic (All men are mortal...) he never fathoms the possibility that one of these sets that he talks about could be empty. (Empty sets, in that sense, don't belong in the realm of science, as far as he is concerned, but in the realm of fiction and so forth).

So, to get back to the original post: If I were doing this for a 2-4 year old, then zero is a can of worms I would try to avoid opening altogether. Or I would make sure that the presupposition-part of any question that is asked is in line with the evidence on screen.

If, instead of following Aristotle, you follow the embedding of the syllogism into modern predicate calculus and modern predicate calculus into propositional logic, then you end up with outcomes that will be mindbogglingly counter-intuitive to a 4 year old (but to any person, really).

Example: "All flying horses are three-legged." would become a true statement.

Since there are no flying horses, this is always an empty set. Ex falso quodlibet. Therefore always true. A valid statement.


I'd think that exercises for small children are based on more mainstream (nowadays) classical logic and ZFC (and likely with finite sets), and certainly are informal. If so, the reasoning can go as "here's a set of cats, take blue ones out of it, then take bouncing ones out of those; how many is there?".

I wondered whether what's shown on the screen is also supposed to be a complete representation of the set in question, but apparently the correct answer to every question is 0 and I don't see any cats (maybe it just doesn't work correctly here).


I might be corrupted by programming because it doesn't bother me when I hear a vacuously true claim like "All flying horses are three-legged". My mental model corresponds to Python's definition of "all":

    def all(xs, predicate):
        for x in xs:
            if not predicate(x):
                return False
        return True
Similarly,

    def any(xs, predicate):
        for x in xs:
            if predicate(x):
                return True
        return False
You say "Ex falso quodlibet" which makes it sound like you believe such a system leads to contradictions, but this would come down to the choice of rewrite rules.

Example: a rewrite rule from "NOT all(xs, predicate)" to "any(xs, NOT predicate)" would lead to contradictions. Reasoning:

    A. all({}, predicate) is true by def of all
    B. any({}, NOT predicate) is false by def of any
    C. NOT all({}, predicate} is false follows from A
    D. applying the rewrite rule to C, any({}, NOT predicate) is true, which contradicts B.
However, in first-order-logic, that same rewrite rule is fine since sets always contain elements. It doesn't seem like to much work to go from Python-esque any and all to ∀ and ∃. For example "all(xs, predicate)" could be rewritten to: "¬P ∨ (∀ xs. predicate)" where P is a new proposition variable for whether xs contains elements. This relies on the semantics including short-circuiting evaluation (which may be cheating, I don't know).

Or maybe the above is what you already meant when you said "following the embeding..."?


...that's what I mean when I say that computer scientists have been trained to think about certain aspects of logic in a way that doesn't come natural to people and leads to conclusions that almost anybody finds counterintuitive who isn't a computer scientist (like "All flying horses are three-legged").

...it comes down to how you represent natural language quantifiers in logic.

The semantics of "All men are mortal." is that "all" is the quantifier, which takes two higher-order arguments. Using x as the variable that is quantified over, the first argument would have to be a predicate of x and is called the restrictor. The second argument also has to be a predicate of x and is called the body. So "all" is the quantifier. "man" is the restrictor. "mortal" is the body.

Following that notation we would write "All men are mortal" as

    all_x { man(x) } { mortal(x) }
Now the question is how to represent this natural language quantifier in first-order logic. Most computer scientists would think

    ∀x { man(x) -> mortal(x) }
But this is NOT the way Aristotle thought about it, and not the way most human beings naturally think about it. The natural way to think about it is

    ∃x { man(x) } ∧ ∀x { man(x) -> mortal(x) }
The first part of the statement is what's called "existential import". (cf https://en.wikipedia.org/wiki/Syllogism#Existential_import)

When I say "ex falso quodlibet" I mean this: https://en.wikipedia.org/wiki/Principle_of_explosion

Moving over to the example about flying horses:

    all_x { fly(x) ∧ horse(x) } { three-legged(x) }
Without existential import the statement would mean.

    ∀x { ( fly(x) ∧ horse(x) ) -> three-legged(x) }
Now let's evaluate that within a logical theory that contains some common sense:

    ∀x horse(x) -> ¬fly(x)
The statement would then become provable. That's unnatural. No "normal" person who hasn't been taught through formal education to think in a particular way about implication would say "Oh yes, all flying horses are three-legged, that sounds perfectly reasonable."

Now WITH existential import, the statement would have to mean

    ∃x { fly(x) ∧ horse(x) } ∧ ∀x { ( fly(x) ∧ horse(x) ) -> three-legged(x) }
So now, using the same piece of common sense, the statement is no longer provable, but it's negation is (the statement is unsatisfiable). That's how a "normal" person thinks. A normal person would respond by saying "Hang on! There is no such thing as a flying horse! Therefore you are talking utter nonsense."

Going back to the original post: "How many blue cats are bouncing?" means

    howmany_x { blue(x) ∧ cat(x) } { bouncing(x) }
Which statement contradicts a state of the universe / game-screen, wherein there are no blue cats, if you interpret the statement by using existential import.

My suggestion was to rephrase as "How many cats are blue and bouncing?" which means

    howmany_x { cat(x) } { blue(x) ∧ bouncing(x) }
So now instead of "blue cat" being the restrictor and "bouncing" being the body, you would have "cat" as the restrictor and "blue and bouncing" as the body.

This would be better, because now you can use existential import the way "normal people" do, and still get to the desired result "zero" instead of the result "I can't answer that question". You avoid making a presupposition that contradicts the known state of the universe.


OP here, thanks for the thoughtful discussion :)

I'll think about this some more and see if some design decisions can improve the game with regards to "existential import". Thanks for introducing that concept by the way.

My feeling about this when developing the game with my daughter was that when playing a game, you are taking part in a game universe. If there were a reference to flying horses, the inference would instead be "there must be flying horses in this game". The generative gameplay which is creating cats with random attributes also suggests that blue, bouncing cats are likely to exist but just aren't pictured on the screen presently.

In early education (even undergraduate education) it's common to present a simplified model that in some cases contradicts other models, and developing the cognitive machinery to explore and understand the model one working within, its limits, and how it relates to other models may be more valuable than comparing which models better align with objective (or, academic) truth.

At least, this is the thought process I went through with some of the trade-offs about deciding what answer was most correct from the lens of various formalisms (in my limited exposure to those) versus what answer leads to the richest learning in the age-group.


Doesn't this apply to all of the questions? After all, there could be more cats than are displayed.


When you treat the screen as just a sample of all the cats, and you assume that every question is really asking "out of the ones that are on the screen" then 0 makes more sense. The language used by the quiz treats the cats as real, so it's like you're sampling and then evaluating the sample.

If I apply your logic to that, then we never know any quantity of any type of cat in any question, because there are more off-screen.


It's different because when you are asked a question about "the cats" and you can see the cats in question, you presume that you are only being asked about that which is displayed in front of you.

But when you are asked a question about something that is not displayed in front of you, then you do not presume that what you see is the entirety of evidence, because you are being asked about something for which what you are looking at provides no evidence. Therefore, "all cats," rather than "these cats."

"I don't see any of the blue cats, so I don't know how many of the blue cats are bouncing"


If the question comes out of nowhere, like some guy runs up and asks you while you're walking down the street, I agree.

This question however comes within the context that they're looking at cats on the screen. Unless they get zero cats as their answer for the very first question they play, then the context tells them "cats shown here".


It's a necessarily pedantic argument because of how the question is phrased. There was a suggestion as to how the phrasing could be improved to make it clearer.

None of the blue cats are shown here, so we don't have any information to answer a question about them.

If we were previously shown 5 blue cats and none were bouncing, then "5" could seem like the valid answer. If you assume that there is no memory element to the game (which is a weird assumption when teaching), then it's only because there is no option to select "there's not enough info" that "zero" can contextually become the right answer.

I guess I'm still a little bit salty about being asked these kinds of imprecise questions on high-stakes standardized tests that are supposedly testing you on your own precision and accuracy. I remember running into questions that had more than one valid answer because of imprecise wording, at which point the test becomes "what did the test writer intend" instead of "what did the test writer ask."


As a PhD in Math, my opinion is that 0 is a number. Most language have special words to use when the amount is 0. For example, instead of "Five persons want to eat cake." you usually say "*No one wants no eat cake".


I have done my PhD in computational linguistics, specializing in semantics, with my thesis containing a fair chunk of work on mathematical logic, and I can assure you that presupposition is a thing!

https://en.wikipedia.org/wiki/Presupposition

It's also a thing in mathematics.

https://en.wikipedia.org/wiki/Syllogism#Existential_import

The statement "How many blue cats are bouncing" makes the presupposition that blue cats exist. That's just how language works.

It's one of those things where a formal education in mathematics will teach you to think about a thing in a way that is actually unnatural to most human beings.

The standard example that linguists use is "Do you still beat your wife?" to which you can answer neither "Yes" nor "No". Answering "Yes" means you admit that you used to beat your wife and that you are still doing it. Answering "No" means you admit that you used to beat your wife but claim that you are no longer doing it. You can only answer by escaping to the meta-level and attacking the presupposition as in "I am not currently beating my wife, nor have I ever beaten my wife". If you're a politician, then even that will get you in trouble. (Not thinking of a pink elephant, and all that, ...)


I think it's perfectly fine to ask "How many bottles of milk are in the fridge?" even if there is no milk. I admit that most sane people will not answer "Zero".

If someone ask "How many elephants are in the fridge?" it would be weird.

I don't think that it is unnatural to answer "zero" in the first question, it is probably a social convention. For the second question I agree that is unnatural.


You reflected the example wrong though. Asking "How many blue cats are bouncing?" makes the presupposition that blue cats exist. "How many bottles of milk are in the fridge?" makes no presupposition of any kind. To demonstrate my point using your example: You ask: "How many of the milk bottles in the fridge are rancid?" I go to the fridge and see that there is no milk in the fridge. I now can't answer with any number at all, not even zero. Because if I say "None!" or "Zero!" then I will just have said: "I confirm that there is milk in the fridge, and state that none of it is rancid." which contradicts what I have just learned to be the truth.

This is not po-tay-to po-tah-to, people. It's a real thing.


> It's a real thing.

Most people aren't arguing this. Most people are discussing colloquial understanding of language and discussion. The differences you are arguing are important in a highly specialized area of math and science.

It feels like you're arguing whether an object is a Boeing 737 or an Airbus A320 when the important point is an airplane is not a car.


> The differences you are arguing are important in a highly specialized area of math and science.

Actually, I think they're arguing that it would be useful if more people understood this. In addition, the point of the game was to teach logic, not a colloquial understanding of language, which every child gets growing up anyway.


This reminds me of vacuous truth (https://en.wikipedia.org/wiki/Vacuous_truth).

I was recently writing a function that returns early if all items in a list meet a certain condition. It was interesting to think about what should happen if that list is empty.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: