def _lit_to_pygp(literal: Atom, var_store=None): if var_store is None: var_store = {} pred = pygprolog.pygp_Find_Atom(literal.get_predicate().get_name()) if pred < 0: pred = pygprolog.pygp_Create_Allocate_Atom(literal.get_predicate().get_name()) args = [_to_pygp(x, var_store) for x in literal.get_arguments()] return pygprolog.pygp_Mk_Compound(pred, literal.get_predicate().get_arity(), args)
def _pair_to_pygp(p: Pair, lit_var_store: Dict[Variable, int]): left = _to_pygp(p.get_left(), lit_var_store) right = _to_pygp(p.get_right(), lit_var_store) functor = pygprolog.pygp_Find_Atom('.') if functor < 0: functor = pygprolog.pygp_Create_Allocate_Atom('.') args = [left, right] return pygprolog.pygp_Mk_Compound(functor, 2, args)
def _const_to_pygp(c: Constant): return pygprolog.pygp_Mk_Atom( pygprolog.pygp_Create_Allocate_Atom(c.get_name()) )