Interestingly, I was just using AI::Prolog to try and solve this. Unfortunately, my attempted solution required math and I haven't built that in yet. Then I tried to build math logically for just the small problem set, but I hadn't yet defined the "is" primitive. Sigh. Unfortunately, the solutions at hand started getting difficult even when I used SWI-Prolog due to how exhaustive the search space is.