Search code examples
logicpredicatecalculus

First-order predicate calculus, am I doing this right?


This is the statement:

All birds can fly except for penguins and ostriches or unless they have a broken wing.

Here is my attempt:

∀x birds(x)→ fly(x)^((birds(x, penguins)^birds(x, ostriches))˅broken(wing)→¬fly(x))

is my attempt correct? how do we present "except" in predicate logic? thanks


Solution

  • No, your attempt is incorrect. It says that all birds fly and also some birds don't fly, so it's a contradiction. Also note that broken(wing) doesn't mention x at all.

    As a hint, it should look like

    ∀x (bird(x) ^ ¬<conditions under which birds don't fly>) → fly(x)