def split_rules(self): import split_rules # Splits rules whose conditions can be partitioned in such a way that # the parts have disjoint variable sets, then split n-ary joins into # a number of binary joins, introducing new pseudo-predicates for the # intermediate values. new_rules = [] for rule in self.rules: new_rules += split_rules.split_rule(rule, self.new_name) self.rules = new_rules