def compute_complexity(self, instance): domain_complexity = COMPLEXITY_OP([ self.complexity_from_atom[head_from_fact(f)] for f in instance.get_domain() ] + [0]) return domain_complexity + instance.external.get_complexity( instance.num_calls)
def _add_new_instances(self, new_atom): for s_idx, stream in enumerate(self.streams): for d_idx, domain_fact in enumerate(stream.domain): domain_atom = head_from_fact(domain_fact) if is_instance(new_atom, domain_atom): # TODO: handle domain constants more intelligently self.atoms_from_domain[s_idx, d_idx].append(new_atom) atoms = [ self.atoms_from_domain[s_idx, d2_idx] if d_idx != d2_idx else [new_atom] for d2_idx in range(len(stream.domain)) ] self._add_combinations(stream, atoms)