Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unfusion #496

Open
wants to merge 7 commits into
base: predicates
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
tidying up
  • Loading branch information
christianbean committed Aug 1, 2022
commit 963b91f6a5ebc57dacdcc5447398a749e77c64b5
4 changes: 3 additions & 1 deletion tilings/algorithms/fusion.py
Original file line number Diff line number Diff line change
@@ -457,7 +457,9 @@ def fused_tiling(self) -> "Tiling":
assumptions.extend(self.fused_predicates())
if self._tracked:
assumptions.append(self.new_assumption())
requirements = list(list(fc) for fc in self.requirements_fuse_counters)
requirements: List[Iterable[GriddedPerm]] = list(
list(fc) for fc in self.requirements_fuse_counters
)
if self._positive_left or self._positive_right:
new_positive_requirement = self.new_positive_requirement()
requirements = requirements + [new_positive_requirement]
1 change: 1 addition & 0 deletions tilings/strategies/fusion/fusion.py
Original file line number Diff line number Diff line change
@@ -419,6 +419,7 @@ def make_tracked(self) -> "FusionFactory":
return self.__class__(tracked=True, isolation_level=self.isolation_level)

def __call__(self, comb_class: Tiling) -> Iterator[Rule]:
# pylint: disable=import-outside-toplevel
from tilings.strategies.fusion.unfusion import UnfusionStrategy

cols, rows = comb_class.dimensions
2 changes: 1 addition & 1 deletion tilings/strategies/unfusion.py
Original file line number Diff line number Diff line change
@@ -321,5 +321,5 @@ def __repr__(self) -> str:
return self.__class__.__name__ + "()"

@classmethod
def from_dict(cls, d: dict) -> "UnfusionFactory":
def from_dict(cls, d: dict) -> "UnfusionRowColumnFactory":
return cls()
7 changes: 4 additions & 3 deletions tilings/tiling.py
Original file line number Diff line number Diff line change
@@ -164,7 +164,7 @@ def __init__(
else:
self.set_empty()

self._check_init(checked)
self.check_init(checked)

def _set_obstructions_requirements_and_assumptions(
self,
@@ -197,7 +197,7 @@ def _set_obstructions_requirements_and_assumptions(
_assumptions.append(ass)
self._assumptions = tuple(sorted(_assumptions))

def _check_init(self, checked: bool):
def check_init(self, checked: bool):
if DEBUG and not checked:
redone = Tiling(
self._obstructions, self._requirements, self._assumptions, checked=True
@@ -878,7 +878,7 @@ def add_assumptions(self, assumptions: Iterable[Assumption]) -> "Tiling":
if not simplify:
tiling.clean_assumptions()
if DEBUG:
tiling._check_init(False)
tiling.check_init(False)
return tiling

def remove_assumption(self, assumption: Assumption):
@@ -1707,6 +1707,7 @@ def is_empty(self, experimental_bound: Optional[int] = None) -> bool:

TODO: this method ignores predicates
"""
# pylint: disable = arguments-differ
if any(ob.is_empty() for ob in self.obstructions) or any(
not ass.can_be_satisfied(self) for ass in self.predicate_assumptions
):