Basics:
- There is a single culprit (as stated in the original question "...the
guilty one")
- Each suspect makes a different number of true statements
(0, 1, 2, or 3).
- I'll use J1, J2, J3, H1, H2, etc. to represent the statements from each
suspect.
Key Assumptions:
- A guilty person cannot think someone else is also guilty
- Suspicion of guilt is not withheld from the statements made to the owner
As most of the other great answers have done, we'll start with Fred: F1 and F2 cannot both be TRUE, and cannot both be FALSE, so Fred has made at least one true statement (and one false statement). Thus, E2 cannot be true, due to above (F1 and F2 being mutually exclusive).
# True Statements:
1 <= Fred < 3 (F T * or T F *)
Edgar < 3 (* F *)
Therefore, either James or Henry must be the suspect with three truthful statements. Thus, Henry (per James) or Edgar (per Henry) is the thief.
Fred, then, is not the thief, so F3 is TRUE, and Fred has told exactly two truths. Since no two suspects can tell the same number of truthful statements, Edgar has told at most one truth.
Fred == 2 (F T T or T F T)
Edgar <= 1 (* F *)
H1 and H3 are linked: Henry cannot lie about H1 and tell the truth about H3. Conversely, he cannot lie about H3 and tell the truth about H1. Both situations would result in neither James nor Henry being completely truthful, which conflicts with the guidelines. Furthermore, since Fred has already been determined to be the suspect with two truthful statements, Henry must be either completely truthful, or he is telling at most one truth.
James == 3 (Henry is guilty)
Henry <= 1 (F * F)
Fred == 2 (F T T)
Edgar <= 1 (* F *)
--OR--
James <= 1 (F * *)
Henry == 3 (Edgar is guilty)
Fred == 2 (T F T)
Edgar <= 1 (* F *)
If Henry is completely truthful (H1, H2, and H3 are all TRUE, along with F1), then J1 == FALSE: J1 and H1 cannot both be true.
James <= 1 (F * *)
Henry == 3 (T T T)
Fred == 2 (T F T)
Edgar <= 1 (* F *)
E3 == FALSE: Edgar cannot commit the crime without thinking about it (unless we're really reaching into sleep-rustling, split personalities, demonic possession, etc.)
James <= 1 (F * *)
Henry == 3 (T T T)
Fred == 2 (T F T)
Edgar <= 1 (* F F)
J3 == TRUE: The only person who even comes close to accusing James is Edgar (even then, he only claims the alibi is false, which conveys no direct accusation). In any event, if Edgar is guilty (per Henry), Edgar would know James didn't do it, so it is indeed the case that no one thinks James is guilty.
Now, however, we reach a conflict in the Henry-is-correct path: If J2 == TRUE, then James and Fred would both have two truths, which cannot occur, per the guidelines. If J2 == FALSE, then E1 == TRUE. This is also a conflict, since we would then have no suspects that were completely untruthful.
Therefore, James is the suspect telling the whole truth, and Henry is the thief:
J1 == TRUE: Henry is guilty
J2 == TRUE: Alibi is true
J3 == TRUE: No one thinks James did it
H1 == FALSE: James is telling the truth
H2 == TRUE/FALSE (opposite of E3): Fred being on duty (or not) is irrelevant
H3 == FALSE: Edgar did not do it
F1 == FALSE: Henry is wrong
F2 == TRUE: James is right
F3 == TRUE: Fred did not do it
E1 == FALSE: The alibi of James holds
E2 == FALSE: Fred made two TRUE statements
E3 == FALSE/TRUE (opposite of H2): Irrelevant if Edgar isn't guilty
(The final outcome of H2 and E3 do not affect guilt of Henry, and there do not appear to be any statements clearly pointing to one being truthful over the other, outside of speculation of which person might be more likely to lie about those scenarios.)
none of the suspects told the same number of true statements as another one.
that means one of them has 0 true statement, an other one has 1 true statement etc. ? $\endgroup$