← Adam Rybinski · Work with me

Popper (ILP) for Game Rules

Bridging logic to games: induce rules from examples and execute them in production.

Game and betting systems are full of rules: eligibility, pricing tiers, catalog mapping, track-fit, limits, promotions, reward logic. Teams often hard-code these rules in application code and then spend months debugging edge cases and “why does the user qualify” support tickets.

A different approach is to treat rule design as induction. With Inductive Logic Programming (ILP), you specify examples of what should be allowed or denied, constrain the search space, and let the system synthesise the smallest set of logic rules that match the examples.

The core pattern

Popper learns Prolog clauses from pos/neg examples using background knowledge. You keep a clean separation:

A tiny example

% exs.pl
pos(eligible(player_a)).
neg(eligible(player_b)).

% bk.pl (background knowledge)
has_age(player_a, 22).
has_age(player_b, 16).

% desired learned rule (simplified)
eligible(P) :- has_age(P, A), A >= 18.

The value is not the toy threshold. The value is that the rules become: reviewable, testable, and auditable — and they evolve by adding counterexamples, not by “patching if statements.”

Why this matters for games and betting

Connecting to production

The pragmatic production approach is to keep a small “bridge” that loads pinned learned rules and runs queries over ground facts. That avoids rewriting the learned logic into another language and reduces translation bugs.


Related reading: Gamification + Cognitive Science, Neuro-Symbolic AI.