This is great, thanks for posting! I'll definitely take your advice to heart. I've been noticing that finding different data representations of the problem at hand is a big part of finding the "core relations" that describe the problem. My first attempt at the voicing/4 predicate was attempted with a data structure used in a procedural version of the algorithm, and I just couldn't get it to work in Prolog. The second iteration is what you've seen, and I'm working on a third iteration with a simpler data representation that is simplifying the problem even further.
Yeah, I agree that the subject of those commits are far from helpful or descriptive. To be honest, they were written as cheeky subheaders for the generated example article, and don't even do a job there.
I would have loved to throw up the project on a Heroku free tier or something, but it relies on access to a Bitcoin full node. Unfortunately I'm not aware of any publicly accessible JSON-RPC Bitcoin APIs, and I can't route public traffic to my local node.
Here's the project on Github, if you're interested:
I just started diving into using Apollo client the an Elixir backend (using Absinthe). It's an amazing combo! I look forward to more releases from the Apollo team.