Skip to content

Commit 0b70a25

Browse files
Merge pull request #31 from andrewcropper/revert-30-variantconstraints
Revert "only build variants using existing variables when the size is bounded…"
2 parents 35c6d09 + 66699db commit 0b70a25

File tree

2 files changed

+10
-17
lines changed

2 files changed

+10
-17
lines changed

popper/gen2.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ def unsat_constraint2(self, body):
210210

211211
def build_generalisation_constraint3(self, prog, size=None):
212212
rule = tuple(prog)[0]
213-
for body in self.find_variants(rule, max_rule_vars=True):
213+
for body in self.find_variants(rule):
214214
body = list(body)
215215
body.append((True, 'body_size', (0, len(body))))
216216
if size:
@@ -228,13 +228,10 @@ def build_specialisation_constraint3(self, prog, size=None):
228228
body.append((True, 'program_size_at_least', (size,)))
229229
yield frozenset(body)
230230

231-
def find_variants(self, rule, max_rule_vars=False):
231+
def find_variants(self, rule):
232232
head, body = rule
233233
body_vars = frozenset(x for literal in body for x in literal.arguments if x >= len(head.arguments))
234-
if max_rule_vars:
235-
subset = range(len(head.arguments), len(body_vars)+1)
236-
else:
237-
subset = range(len(head.arguments), self.settings.max_vars)
234+
subset = range(len(head.arguments), self.settings.max_vars)
238235
for xs in permutations(subset, len(body_vars)):
239236
xs = head.arguments + xs
240237
new_body = []

popper/gen3.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ def build_generalisation_constraint3(self, prog, size=None):
431431
return
432432

433433
self.new_seen_rules.update(self.build_seen_rule2(rule, False))
434-
for variant in self.find_variants3(rule, max_rule_vars=True):
434+
for variant in self.find_variants3(rule):
435435
con = []
436436
con.extend(variant)
437437
con.append((True, 'body_size', (0, len(body))))
@@ -452,7 +452,7 @@ def build_generalisation_constraint3(self, prog, size=None):
452452
bases.append(frozenset(con))
453453
else:
454454
self.new_seen_rules.update(self.build_seen_rule2(base, False))
455-
for variant in self.find_variants3(base, ruleid=0, max_rule_vars=True):
455+
for variant in self.find_variants3(base, ruleid=0):
456456
con = []
457457
con.extend(variant)
458458
con.append((True, 'body_size', (0, len(base_body))))
@@ -469,7 +469,7 @@ def build_generalisation_constraint3(self, prog, size=None):
469469
bases.append(frozenset(con))
470470
else:
471471
self.new_seen_rules.update(self.build_seen_rule2(rec, True))
472-
for variant in self.find_variants3(rec, ruleid=1, max_rule_vars=True):
472+
for variant in self.find_variants3(rec, ruleid=1):
473473
con = []
474474
con.extend(variant)
475475
con.append((True, 'body_size', (1, len(rec_body))))
@@ -501,7 +501,7 @@ def build_banish_constraint(self, prog):
501501

502502
self.new_seen_rules.update(self.build_seen_rule2(rule, False))
503503

504-
for variant in self.find_variants3(rule, max_rule_vars=True):
504+
for variant in self.find_variants3(rule):
505505
con = []
506506
con.extend(variant)
507507
con.append((True, 'body_size', (0, len(body))))
@@ -521,7 +521,7 @@ def build_banish_constraint(self, prog):
521521
bases.append(frozenset(con))
522522
else:
523523
self.new_seen_rules.update(self.build_seen_rule2(base, False))
524-
for variant in self.find_variants3(base, ruleid=0, max_rule_vars=True):
524+
for variant in self.find_variants3(base, ruleid=0):
525525
con = []
526526
con.extend(variant)
527527
con.append((True, 'body_size', (0, len(base_body))))
@@ -538,7 +538,7 @@ def build_banish_constraint(self, prog):
538538
bases.append(frozenset(con))
539539
else:
540540
self.new_seen_rules.update(self.build_seen_rule2(rec, True))
541-
for variant in self.find_variants3(rec, ruleid=1, max_rule_vars=True):
541+
for variant in self.find_variants3(rec, ruleid=1):
542542
con = []
543543
con.extend(variant)
544544
con.append((True, 'body_size', (1, len(rec_body))))
@@ -548,14 +548,10 @@ def build_banish_constraint(self, prog):
548548
for r2 in recs:
549549
yield r1 | r2
550550

551-
def find_variants3(self, rule, ruleid=0, max_rule_vars=False):
551+
def find_variants3(self, rule, ruleid=0):
552552
head, body = rule
553553
head_arity = len(self.settings.head_literal.arguments)
554554
body_vars = frozenset(x for literal in body for x in literal.arguments if x >= head_arity)
555-
if max_rule_vars:
556-
subset = range(len(head.arguments), len(body_vars)+1)
557-
else:
558-
subset = range(len(head.arguments), self.settings.max_vars)
559555
subset = range(head_arity, self.settings.max_vars)
560556
for xs in permutations(subset, len(body_vars)):
561557
xs = head.arguments + xs

0 commit comments

Comments
 (0)