Five criminals appeared before the court for sentence.
Their names,
strange to say, were Fraud, Libel, Blackmail, Theft and Murder - each
the namesake of the crime with which one of the others was charged.
The namesake of the crime with which Blackmail was charged was himself
charged with the crime of which the namesake was charged with murder.
The namesake of the crime with which Murder was charged was himself
charged with the crime of which the namesake was charged with fraud.
All the prisoners were found guilty and sentenced. Theft, for
example, got seven years. The criminal who was found guilty of murder was placed on death row.
Who committed the murder?
Let the function c(X) denote the crime the person with name X committed. We know that for all X, c(X) ≠ X.
This leaves two possibilities for a graph representing c(.).
Either there is a loop of length 2 and a loop of length 3, or a single loop of length 5.
From the first hint we get that c(c(c(Blackmail))) = Murder.
From the second we get that c(c(c(Murder))) = Fraud.
From the combination we get that c(c(c(c(c(c(Blackmail)))))) = Fraud.
If Blackmail would be in a loop of either length 2 or 3, this would mean that c(c(c(c(c(c(Blackmail)))))) = Blackmail.
This means that the graph of c(.) is a loop of length 5.
[...] -> Blackmail -> Fraud -> ? -> Murder -> ? -> [...]
We know, from the third hint, that theft did not commit murder (c(Theft) ≠ Murder).
This gives the loop [...] -> Blackmail -> Fraud -> Libel -> Murder -> Theft -> [...]
The person who commited Murder is Libel.