How to translate “no two robots love exactly the same set of cats.” to first-order logic?

566 Views Asked by At

Is this the correct way to translate “no two robots love exactly the same set of cats.” to first-order logic?

$$\forall r_1 \forall c (\text{Robot}(r) \land \text{Cat}(c) \land \text{Loves}(r, c)) \rightarrow \\ \forall r_2 (\text{Robot}(r_2) \land r_1 \ne r_2 \rightarrow \lnot \text{Loves}(r_2, c))$$

Edit: revised answer based on Owen Biesel's feedback.

∀c ∈ C. (Cat(c) →
    ∀r. ∀s ∈ ℘(C). (Robot(r) ∧ Loves(r, s) →
        ∀x. (Robot(x) ∧ x ≠ r → ¬Loves(x, s))   
    )
)

Edit 2: clarify what ℘(C) means.
If C is a set, then ℘(C) is the power set of C.

Edit 3: One more try

∀r. ∀x. (x ≠ r ∧ Robot(r) ∧ Robot(x) →
    ∃c. (Cat(c) ∧ Loves(r, c) ∧ ¬Loves(x, c))
)

Edit 4:

∀r1. ∀r2. ∃c1. (r1 ≠ r2 ∧ Robot(r1) ∧ Robot(r2) ∧ Cat(c1) ∧ Loves(r1, c1) ∧ Loves(r2, c1)) →
    ∃c2. (c1 ≠ c2 ∧ Cat(c2) ∧ 
        ((Loves(r1, c2) ∧ ¬Loves(r2, c2)) ∨ (Loves(r2, c2) ∧ ¬Loves(r2, c2)))
    )
)