Introduction

Teaching a computer to solve logic problems is worthwhile.

Motivation

  • Human solutions to constraint problems works when there are a reasonable number of constraints. Humans can solve Sudoku problems, but sometimes it takes a while. That’s a maximum of 81 variables and roughly 27 constraints (there are 9 rows, 9 columns, and 9 squares).

  • Industrial problems like checking to see if a printed circuit board correctly implements a specification will take a lot more variables. (The technique could even be applied to the internal “wiring” of a single semiconductor chip.)

  • Repetitive solution of similar problems is also unattractive to humans.

Application: Firewall Updating

Microsoft Azure updating firewall rules with a simplified version. It would be a costly disaster if the new “simplified” version of the firewall rules blocked something required for the business to function, so they used a logic solver to prove that the old and new firewalls let through exactly the same packets.

A writeup of the firewall rule-replacement process is posted online in a Microsoft Research blog entry by Andrew Helwer.

Last modified February 22, 2024: Prolog reference and fact sheet. (08586b3)