potassco / potassco/constraint-handler

RecursionError when converting deeply nested operations

Open
#409 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
3
Forks
0
Avg merge
1d 19h
Merged PRs (30d)
20

Description

A valid CH expression with 400 integer operands can raise
RecursionError: maximum recursion depth exceeded during term conversion.

from clingo import Function, Number, String, Tuple


def integer(value):
    return Function("val", [String("int"), Number(value)])


expression = integer(0)
for value in range(1, 400):
    expression = Function(
        "operation",
        [Function("disj", []), Tuple([expression, Tuple([integer(value), Tuple([])])])],
    )

facts = f"ensure(test,{expression})."

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the nested-expression example in the issue and trace the term-conversion path that raises RecursionError. Identify the conversion entry point and relevant tests, then verify that a 400-operand expression converts successfully without breaking existing conversion behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.