6 ms·
What about "none" instead of zero?
by popnroll 7y ago
What about "none" instead of zero?
- stakhanov 7y ago...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 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.
- defanor 7y agoI'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).
- tmerr 7y agoI 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..."?
- stakhanov 7y ago...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 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 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.