I'm learning first order logic right now and I'm stuck on a translation.


P(x) : x is a planet

M(x) : x is a moon

S(x) : x is a star

O(x,y) : x orbits around y

  1. Only stars have planets orbiting around them.

My attempt:

Ax (x is a star and y orbits x -> y is a planet)

AxAy(S(x) /\ O(y,x)) -> P(y))

  1. Every moon orbits around some planet.

Ax (x is a moon -> x orbits some planet y)

Ax (M(x) -> Ey (P(y) /\ O(x,y)))

Are these correct? Note A is "for all" and E is "there exists". Thanks

  • Welcome to SE Philosophy! Thanks for your contribution. Please take a quick moment to take the tour or find help. You can perform searches here or seek additional clarification at the meta site. Don't forget, when someone has answered your question, you can click on the arrow to reward the contributor and the checkmark to select what you feel is the best answer. – J D Nov 9 '20 at 2:26
  1. Only stars have planets orbiting around them.
    AxAy(S(x) /\ O(y,x)) -> P(y))
  1. "Only A B" means "if B then A", not "if A then B": "Only stars have planets which orbit them" translates as if there is a planet orbiting x, then x must be a star, which by the truth table of -> is false exactly when something has a planet orbiting it but is not a star, but can still be true for objects which are stars but don't have orbiting planets (because "only" means that at most stars have such planets, not necessarily all of them). But if x is a star, then x has an orbiting planet makes these predictions precisely the wrong way round. So antecedent and succedent in the implication have to be switched.
  2. You got the connectives the wrong way round: The statement should be if y is a planet that orbits x, then x must be a star (which means that planets orbit only starts) , not if x is a star and y orbits x, then y must be a planet (which would mean that stars have only planets as orbiting objects).

This gets you

all x all y ((P(y) ^ O(x,y)) -> S(x))

  1. This is correct, but a little unintuitive: Instead of moving the existence of a planet out of the implication to a universal quantification (which makes for a logically equivalent statement), keep the quantifier where the English sentence has it:

all x (exists y (P(y) ^ Q(x,y)) -> S(x))
("For all objects, if there exists a planet which orbits it, then it must be a star.")

  1. Every moon orbits around some planet.
    Ax (M(x) -> Ey (P(y) /\ O(x,y)))


  • Thank you for the insightful reply. – Ford Wendy Nov 8 '20 at 23:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.