1#script (lua) 2 3clingo = require("clingo") 4 5local Propagator = { } 6Propagator.__index = Propagator 7 8function Propagator.new() 9 return setmetatable({ }, Propagator) 10end 11 12function Propagator:init(init) 13 local a = init:solver_literal(init.symbolic_atoms:lookup(clingo.Function("a")).literal) 14 local b = init:solver_literal(init.symbolic_atoms:lookup(clingo.Function("b")).literal) 15 local c = init:solver_literal(init.symbolic_atoms:lookup(clingo.Function("c")).literal) 16 init:add_weight_constraint(a, {{b, 1}, {c, 1}}, 1, -1, true) 17end 18 19function main(ctl) 20 ctl:register_propagator(Propagator.new()) 21 ctl:ground({{"base", {}}}) 22 ctl:solve() 23end 24 25#end. 26 27{ a;b;c }. 28