You’ve probably seen the “birthday logic puzzle” that’s gone viral in the past few days. If you haven’t, you might want to try to solve it yourself. Here it is:

Two dynamic epistemic logicians, Audrey Yap (UVic) and Barteld Kooi (Groningen) explained the solution (and how to get it) on facebook. “Dynamic” here modifies “epistemic”, not “logicians:” there is something called “dynamic epistemic logic” which is used here. FWIW, I know that Audrey at least is very dynamic.

Audrey’s solution, posted with her kind permission:

These are all the possibilities at the start. The red lines represent Albert’s uncertainty, and the blue lines represent Bernard’s uncertainty. So there’s a red line between May 15 and May 16 because Albert would only know it’s May and not what date. And there’s a blue line between May 15 and Aug 15 because Bernard would only know it’s the 15th and not what month.

Then the first important piece of information is that Albert knows that Bernard doesn’t know the date. This eliminates a lot of dates, because if Albert is certain that Bernard doesn’t know the date, we can’t be in a month where Bernard *might* know the date. That effectively eliminates May and June, because in both of those months, there’s a possibility Bernard could already know the date.

And then the next interesting thing we learn is that, after learning that piece of information, Bernard does know the date. So here’s what it looks like with May and June eliminated and how we figure out what to do with that information. Since Bernard now knows the date, it can’t be the 14th, since then he still wouldn’t know.

Then last, when we see that Albert actually learned the date from hearing the fact that Bernard does, know there’s only one date it could possibly be. So here’s what it looks like when we eliminate the 14th as a possibility.

Barteld Kooi’s video explanation is here on facebook and also on YouTube:

I don’t see how May is discarded, couldn’t it still be the 15th-16th May?

The only way Albert can know at the beginning that Bernard doesn’t know the date, is if he can rule out that it’s May 19 or June 18 (since if the day was 18 or 19, Bernard could figure out the month). But all Albert knows is the month, and the only way to rule out May 19 and June 18 on the basis of the month is if the month is July or August.

I don’t get it? If Albert knows that Bernard doesn’t know the date, it is this knowledge that let’s him rule out the days 19 and 18 because these days would be enough for Bernard to determine the date. SO the options of May 15 and 16 stay open. Why must Albert rule out possibilities by month if he knows the month AND that Bernard doesn’t know the date. He knows both of these pieces of information from the outset.

If Albert can rule out that Bernard knows, he must be able to do so only on the basis of his own knowledge (what month it is, and that Bernard only knows the day). If the date were in May he wouldn’t be able to rule out that Bernard knows: for all Albert knows, the day might be the 19th, and if it were then Bernard would know the full date. So if Albert can rule out that Bernard knows, he can only do so because he knows that the month isn’t May. And the same for June. So

wecan conclude, based just on the puzzle’s setup and the information that neither Albert nor Bernard know the date at the beginning, that the month is neither May nor June.There’s a comment on this in a follow-up piece also in the Guardian.

http://www.theguardian.com/science/alexs-adventures-in-numberland/2015/apr/13/can-you-solve-the-singapore-primary-maths-question-that-went-viral

In my reading, the alternative solution violates the principle that the there are no other sources of knowledge than those we are told about — a background assumption about these kinds of problems.

Duh. That’s the same link that Richard posted, but there’s a link at the top “why this went viral”, that changes the story associated with the URL.

Barteld is also dynamic. And epistemic. 🙂

The riddle can also be solved automatically with DEMO, a model checker for DEL, written by Jan van Eijck in Haskell and available here: http://homepages.cwi.nl/~jve/software/demo_s5/

And here is my solution in a PDF and a literate Haskell file:

https://www.sorgenblogger.de/wp-content/uploads/2015/04/cheryl.pdf

https://www.sorgenblogger.de/wp-content/uploads/2015/04/cheryl.lhs_.tar.gz