clingo-hmknf-test/example.py

31 lines
727 B
Python

from mimetypes import init
import clingo
PROGRAM_A = """
#theory o {
kterm {- : 0, unary };
&o/0 : kterm, any
}.
a, b.
a :- &o{a}.
b :- &o{b}.
"""
class CheckAtoms:
def init(self, init: clingo.PropagateInit):
theory_lits = set(init.solver_literal(atom.literal) for atom in init.theory_atoms)
symbolic_lits = set(init.solver_literal(atom.literal) for atom in init.symbolic_atoms)
if len(theory_lits & symbolic_lits) == 0:
print("There is no solver literal overlap")
else:
print("There is overlap")
control = clingo.Control(["0"])
control.register_propagator(CheckAtoms())
control.add("base", [], PROGRAM_A)
control.ground([("base", [])])
control.solve()