Skip to content

Commit 280a66b

Browse files
Merge pull request #32 from andrewcropper/variantconstraints
minor correction
2 parents 0b70a25 + c311468 commit 280a66b

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

popper/gen2.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,10 @@ def build_specialisation_constraint3(self, prog, size=None):
231231
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-
subset = range(len(head.arguments), self.settings.max_vars)
234+
if max_rule_vars:
235+
subset = range(len(head.arguments), len(body_vars | set(head.arguments)))
236+
else:
237+
subset = range(len(head.arguments), self.settings.max_vars)
235238
for xs in permutations(subset, len(body_vars)):
236239
xs = head.arguments + xs
237240
new_body = []

popper/gen3.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,10 @@ 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 | set(head.arguments)))
557+
else:
558+
subset = range(len(head.arguments), self.settings.max_vars)
555559
subset = range(head_arity, self.settings.max_vars)
556560
for xs in permutations(subset, len(body_vars)):
557561
xs = head.arguments + xs

0 commit comments

Comments
 (0)