Igor is a constraint programming library for Clojure. It shadows Clojure's core operators (+, =, and, every?, etc.) so constraint expressions read like normal Clojure — but when any argument is a decision variable, they build an AST that compiles down to industrial solvers via MiniZinc.
It supports integer arithmetic, set algebra (intersection, union, difference, subset/superset), universal quantification, extensional constraints (table, regular/DFA, cost-regular), and a graph constraint library for paths, spanning trees, circuits, and connectivity — all composable and optimizable.
I built it because I wanted to express constraint problems in Clojure without leaving the language or losing composability.
danefilipczak•2h ago
It supports integer arithmetic, set algebra (intersection, union, difference, subset/superset), universal quantification, extensional constraints (table, regular/DFA, cost-regular), and a graph constraint library for paths, spanning trees, circuits, and connectivity — all composable and optimizable.
I built it because I wanted to express constraint problems in Clojure without leaving the language or losing composability.