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

...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.




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

Search: