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