def __str__(self): result = 'Goal(term={0}, slot={1}) of cost {2}'.\ format(fold_numbers(self.term), self.slot, self.cost()) if self.gets: result += ', depends on {0}'.format(list(self.gets)) if self.lazy_gets: result += ', lazily depends on {0}'.format(self.lazy_gets) return result
def introduce_get(self, sub_term, register_access): g, register_slot = fold_numbers(register_access) assert isinstance(register_slot, int) assert g == cards.get self.gets.add(register_slot) if not is_subterm_eager(sub_term, self.term): self.lazy_gets.add(register_slot) self.term = replace_leaf_subterm(sub_term, register_access, self.term)