def __init__(self): self.compiler = Compiler() # parser state self.agg_name = defaultdict(none) self.bc = set() self.other = [] self.ruleix = 0 # rules self.rules = {} self.updaters = defaultdict(list) self._gbc = defaultdict(list) # data structures self.agenda = prioritydict() self.chart = Charts(self.agg_name) self.error = {} self.changed = {} # misc self.time_step = 0 # coarsening of the program shows which rules might depend on each other self.coarse_deps = defaultdict(set) self.rule_by_head = defaultdict(set) self.rule_dep = defaultdict(set) # rules which depend on a predicate # rules which need to be recompiled against new program state. self.recompile = set() # forward chaining rules which failed to initialize self.uninitialized_rules = []