Welcome to Bus Logic, the site that showcases Prolog with small usable applications, each of which can be easily readable on a bus ride!

I've been a bit slow to update things I know, but getting there. Decided to do some rebranding of the site, which may or may not work on mobile, it's still a work in progress so bear with me.


A set of predicates that helps write programs that use only Horn Clauses. The entire library uses only "pure" prolog operations and no inbuilt predicates.Running apps in Docker allow for flexible deployment options to production options. I have included here how I build web server Docker images using Prolog.A useful bit of code showing how to send and SMS using the Twilio APIs.I have several git repositories, both private and for work and wanted a way to update them all at once to a local backup folderThere is a group of houses, and a set of clues to determine who lives where, but who owns the fish?Given only parts of the cards and how they relate to each other, find the three cards...A small tool that can generate scales and chords of any type. Uses only horn clausesExploration of a simple example of how to enforce security rules for predicates after the predicates have already been written and used several times.A little program that helps to assign Kris Kringle targets based on a set of rules.At the start this site used a very simple generator program to add a consistent style across the site. This page explains the code behind this.A client wanted a dump of the users in their system, but I didn't have access to the database, only to an API that spit out JSON.A fun exercise to create a traffic light system that could be used for model trains, or whatever.Prolog predicates often end up with more than one use, and append is a built in predicate that has a good number of subtle uses.After an exercise to convert raw RGB values into a hex code (eg: #ff00ff) was raised on Reddit daily programmer, I thought a Prolog version was required.If you have played Dungeons and Dragons before then you would know that sometimes dice rolls can become a bit tedious, why not automate them?