Newer
Older
from dataclasses import dataclass
@dataclass
class ReducePath:
path: list[bool]
reasons: list[str]
@classmethod
def empty(cls):
return cls([], [])
def reduce(predicate, reducer, i):
r = ReducePath.empty()
j = i
ix = reducer(i, r.explore(True))
# While we don't consume all choices going down the true branch
while r.left() >= 0:
def debug(predicate):
def newpred(i):
t = predicate(i)
def reduce_set(i: set, r) -> set:
result: set = set()
for e in sorted(i):
if not r.check(f"remove {e}?"):
result.add(e)
return result