
Kevin L. answered 05/26/20
Experienced Tutor and Former University Course Assistant
Those who do not cheat love everybody
The third statement could be vacuously true, but you are saying that there exists such an x.
Maybe this could work: Vx [ ~cheat(x) -> Vy love(x, y) ]
The "student(x) ^ " and " ^ student(y)" seem excessive. You may still leave them in there, if you want. It depends on how pedantic your grader is. The third and fourth statements do not mention the word "student". Only the first two statements do.
Those who cheat love who do not cheat
Again, this statement can be vacuously true.
I'm assuming that the statement should be: Those who cheat love those who do not cheat.
Maybe this will work: Vx [ cheat(x) -> (Vy (~cheat(y) -> love(x,y)) ]
For the last part, I don't think you need to use any "particularly official" inference algorithm. I think "any inference algorithm" just means that you can figure it out any way you want. If you really need an "official" algorithm, you could use brute force (NOT recommended) by hypothesizing every single possibility and seeing if it is necessarily true, necessarily false, or indeterminate.
~loves(Allen, Marry) combined with "Those who do not cheat love everybody" implies cheat(Allen). Else, he would have loved everybody, including Marry.
The inference cheat(Allen), combined with loves(Allen, Diana), combined with "Those who cheat love those who do not cheat", does not imply ~cheat(Diana) because the statement is not "Those who cheat love only those who do not cheat"
Not all students copy from his/her peers would imply that someone does not cheat. However, we are not told that Diana, George, Ellen, Allen, and Marry are all of the students.