https://techaiverse.com/implementing-logic-programming/