potassco / potassco/constraint-handler
Passing the output of a propagator `execution_declare/5` constraint to a non-propagator constraint
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 3
- Forks
- 0
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 20
Description
Say I have an execution_declare/5 constraint that assigns a value to some output and then I have an ensure/2 constraint that enforces some requirement. For example,
execution_declare(c1,c1,assign(a,val(int,1),(),(a,())
ensure(c2,operation(gt, (variable(execution_output(c1,a)), (val(int,0),())))).
In general I understand that if c1 is handled by the propagator engine then c2 must also be handled by the propagator engine. So currently the following won't work:
requestEngine(c1, propagator).
requestEngine(c2, compile).
However, it should be possible to provide extra information that fully specifies the domain for execution_output(c1,a) in which case all possible output values can be grounded in ASP and then passed to c2.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the execution_declare/5 and ensure/2 constraint paths, then trace how requestEngine selects the propagator or compile engine. Determine how fully specified execution_output values could be grounded and handed to a non-propagator constraint; done means the c1/c2 scenario works with c1 using propagator and c2 using compile.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100