Releases: PermutaTriangle/Tilings
Releases · PermutaTriangle/Tilings
Version 4.0.0
[4.0.0 - 2025-03-13]
Added
- python3.9 are deprecated, python3.10 - python3.13 are supported
- added
TileScopePack.requirement_and_row_and_col_placements AssumptionAndPointJumpingFactorywhich adds rules where requirements and/or
assumptions are swapped around a fusable row or column.PointJumpingFactorywhich adds rules where requirements and assumptions can be
swapped around a fusable row or column.MonotoneSlidingFactorythat creates rules that swaps neighbouring cells if they
are 'monotone' fusable, i.e., they are a generalized fusion with a monotone local
extra obstruction.DeflationFactorywhich adds rules where cells can be deflated into increasing or
decreasing cells as obstructions can't occur across the sum/skew components in that
cell.CellReductionFactorywhich changes a cell to monotone if at most one point of
any crossing gp touches that cell.PositiveCorroborationFactorythat inserts into cells which if positive makes
another cell empty. Also, thePointCorroborationFactory, which does this for
point or empty cells which is added to most packs.TargetedCellInsertionFactorywhich inserts factors of gridded perms if it can
lead to factoring out a verified sub tiling.BasisPatternInsertionFactorywhich inserts permutations which are contained in
every pattern in the basisComponentVerificationStrategywhich is added to component fusion packs.ComponentToPointAssumptionStrategythat changes component assumptions to point
assumptions. These strategies are yielded inRearrangeAssumptionFactory.StrategyPack.kitchen_sinkifyto add many experimental strategies to the packSubobstructionInsertionFactorythat inserts subobstructions and the pack
TileScopePack.subobstruction_placementswhich uses it.FactorWithInterleavingStrategy.backward_mapso you can now generate permutation
from specifications using interleaving factors.DummyStrategythat gives a quick template for making strategies.PointingStrategy,AssumptionPointingFactoryandRequirementPointingFactory
that place points directionless in non-point cells. This are a non-productive
strategy so should be used withRuleDBForest.UnfusionFactorythat unfuses either all the rows or columns. Also non-productive.FusableRowAndColumnPlacementFactoryplaces fusable rows and columns.TrackedClassDBused byTrackedSearcher- counting for
GeneralizedSlidingStrategyof rows (i.e.,rotate=True)
Fixed
Factorwas not factoring correctly with respect to component assumptions.ComponentAssumptionare flipped when taking symmetriesTiling.get_minimum_valuefixed for component assumptionsRearrangeAssumptionFactorywill ignore component assumptionsGriddedPermReduction.minimal_reqswas removing requirements if they
were duplicates.RequirementPlacementalgorithm didn't minimise obstructions correctly when
placing size 2 or higher gridded perms.- added missing condition in
MonotoneSlidingFactoryfor consecutive
values. Previous rules failing this condition will now raise
StrategyDoesNotApplyif it fails this condition. LocalVerificationStrategyneeds to be aBasisAwareVerificationStrategyPointJumpingmaps component assumption to component assumptions.Tiling.all_symmetrieshad a premature break statement that was removedshift_from_specmethod would previously fail if any tiling had two or
more interleaving cells.
Changed
TileScopePack.make_trackedwill add the appropriate tracking methods for
interleaving factors and make strategies tracked if it can be.- The
GriddedPermReductionlimits the size of obstructions it tries to infer in
theminimal_obsmethod to the size of the largest obstruction already on the
tiling. - The
SymmetriesFactorytakes a basis and will not return any symmetries where
any of the patterns of the obstruction are not subpatterns of some basis element.
If no basis is given, all symmetries are returned. RequirementPlacementadds empty cells when placing a point cell. This saves
some inferral in partial placements.- Don't reinitialise in the
Tiling.from_dictmethod. GuidedSearcherexpands every symmetryTileScopePack.pattern_placementsfactors as an initial strategy.is_componentmethod of assumptions updated to consider cell decompositionAddAssumptionsStrategy.is_reveribleis now True when the assumption covers the
whole tiling.- The default behavior for
RequirementInsertionis to allow insertion of factorable
requirements OneByOneVerificationStrategywill look up permpal.com to find the generating
functions and min polys, and also use permpal specs for counting, sampling and
generating objects.- The
kitchen_sinkifyfunction onTileScopePacknow takes a level between 1 and 5
as input, which is used to determine how crazy the added strategies should be.
Removed
AddInterleavingAssumptionsFactory. The factor strategy now adds the relevant
assumptions where necessary directly, lowering the number of CVs needed.
Version 3.1.0
[3.1.0] - 2022-01-17
Added
Tiling.remove_requirementmethod that removes a requirement from a tiling.RemoveRequirementFactorywhich adds the rules where we insert a requirement to a
tiling after we first remove that requirement. This is added to
LocallyFactorableVerificationStrategy.pack.- The tiling initialiser will now add factors of obstructions if it is implied by
multiple different obs and one requirement list of size possibly greater than one.
Previously it was only doing the case where a single ob's factor is implied by a
requirement.
Fixed
ForgetTrackedSearcherwas not retroactively applying strategies that had abasis.- Bug with sliding symmetries
- The tiling initialiser was not removing duplicate/redundant requirements.
Changed
- One by one verification will now only verify subclasses of the given basis.
- Verification strategies no longer ignore parent
TrackedSearchernow uses aTrackedQueueand is able to work with all packs
and new future strategies.
Deprecated
- Python 3.7 is no longer supported
Version 3.0.0
[3.0.0] - 2021-06-14
Added
- Rearrange assumption strategy
TrackingAssumption.from_cellmethod- Counting for reverse fusion
FusionParallelSpecFinder,FusionIsomorphismandFusionBijectionsubclasses
to handle bijection involving fusion and assumption strategies.- a
insertion_point_row_and_col_placementspack inTileScopePack TrackedSearcherandForgetTrackedSearcherthat prioritise expanding classes
with assumptions when the underlying tiling was expanded
Changed
- Updated to use comb_spec_searcher 4.0.0
- Using
strategy_pack.make_fusionorstrategy_pack.make_trackednow automatically
addsRearrangeAssumptionFactorywithapply_first=Trueiftracked=True - Moved several local function in
RearrangeConstructoroutward to make it pickleable - Fixed isolated fusion bug
- Fusion is now a one-way strategy.
- Added length to name for
all_the_strategiespack
Fixed
- Removed a redundant
Tiling.is_emptycheck in the fusion algorithm. - Ensure
is_atomreturns False for the empty tiling
Deprecated
- Python 3.6 is no longer supported
Version 2.5.0 (Zenodo)
Re-release for zenode
[2.5.0] - 2020-11-11
Changed
- Updated comb_spec_searcher version for faster counting
Version 2.5.0
[2.5.0] - 2020-11-11
Changed
- Updated comb_spec_searcher version for faster counting
Version 2.4.0
[2.4.0] - 2020-10-28
Added
to_texfor gridded perms.to_tikzfor gridded perms.to_svgfor gridded perms.to_guifor tilings.- Mappings for gridded perms:
column_reverse,row_complement,
permute_columns,permute_rowsandapply_perm_map_to_cell. - Mappings for tilings:
column_reverse,row_complement,
permute_columns,permute_rows,apply_perm_map_to_cell. guess_from_gridded_permsto guess tiling T from gridded perms in Grid(T).enmerate_gp_up_tocounts gridded perms of length 0, 1, 2, ... up to a max length.- Can sample and generate objects from fusion specifications.
Fixed
- Anti-diagonal symmetry backward map was fixed.
This is same as 2.4.1 because of some release confusion
Version 2.3.1
[2.3.1] - 2020-09-11
Fixed
- Dependency issue when installing
Version 2.3.0
[2.3.0] - 2020-09-10
Added
- introduced isolation levels to the fusion strategy
- added the
one_cell_onlyoption toCellInsertionFactory remove_components_from_assumptionsmethod toTilingDetectComponentsStrategywhich removes cells from assumptions
which are actual components. This replaces the need for the
SplittingStrategyin component fusion packs.- added equation generators to
FusionStrategyfor the case where one or both
sides are positive - added a
to_html_representationmethod toTiling SubclassVerificationFactoryand the corresponding strategyis_subclassmethod toTiling- added
point_and_row_and_col_placementsstrategy ShortObstructionVerificationStrategy- using Github Actions for testing and deployment
Changed
- insertion packs now use the
one_cell_onlyoption, and no longer use
RequirementCorroborationFactory - the
get_eq_symbolandget_op_symbolare moved toStrategyrather than
Constructor - the
GriddedPermsOnTilingalgorithm was changed to build from minimal
gridded perms in a breadth first manner. This is also include an option to
limit the number of points placed on the minimal gridded perms. - new default behavior of
RequirementInsertionFactoryis to only insert requirements
on tilings that don't already have any - converted the expansion strategies in several strategy packs to be a single set
- requirement corroboration is only enabled when requirements of length > 1 are placed
- A gridded permutation can now be built from any iterable of integer, not only
from permutation.
Fixed
- untracked constructors raise
NotImplementedError - forbid fusing a region containing a
TrackingAssumptionand a
ComponentAssumption - a tiling factors if a
ComponentAssumptionif the components of the region
split into the factors - only fuse non-empty regions to avoid creating unintentional rules a -> b
where a and b are equivalent - remove duplicate assumptions in the
AddAssumptionsStrategy Tiling.from_dictwill make aTilingwith no assumptions if the
assumptionskey is not in the dictionary.- a factor with interleaving strategy has
inferrable=True - a factor with interleaving strategy return a normal factor strategy when
there's no interleaving going on. - removed the length argument to the
insertion_point_placementspack which
was not implemented, and thus raising an error. - Bug that occurred when factoring the empty tiling
- fixed that the
partialflag was ignored inpoint_placements - isolation levels were not being passed to component fusion
- expanding a symmetry of 132 with both length 2 requirements
Version 2.2.0
[2.2.0] - 2020-07-08
Added
- add the
can_be_equivalentmethods toAddAssumptionsStrategy,
SplittingStrategy, andFusionStrategy. - added a
get_assumptionmethod toTiling
Changed
- the
Factoralgorithm will now factorTrackingAssumptionsif they span
multiple factors of the tiling. This means that theSplittingStrategyis
removed from the trackedStrategyPack. It does not factor
ComponentAssumptions, so using this strategy still requires the
SplittingStrategy.
Fixed
- remove empty assumptions when creating extra parameters in
FusionStrategy - the method
Tiling.get_genfreturns the Catalan generating function for Av(123). - correct the generating function equations for
SplittingStrategy
Version 2.1.0
[2.1.0] - 2020-06-29
Added
- add a new
AddAssumptionStrategywhich adds an assumption to a tiling.
In practice, when expanding a class, we actually remove an assumption to
determine which rules to add. - the
get_equationsmethod is now implemented for the strategies
AddAssumptionStrategy,SplittingStrategy, andFusionStrategy. - the
extra_paramtersmethod was implemented for symmetry strategies,
allowing these to be used when enumerating tracked trees. - Add the
InsertionEncodingVerificationStrategywhich verifies n x 1 and
1 x n tilings which have a regular topmost or bottommost insertion encoding. - Added the
SumComponentAssumptionandSkewComponentAssumptiongiving the
ability to track specifications using component fusion. - add partial flag to
insertion_point_placementsand
insertion_row_and_col_placements - Allow fusing rows and columns which are positive on either or both sides.
- The tracking of interleaving factors is implemented, including the poly time
algorithm. This includes the new strategyAddInterleavingAssumptionFactory
which adds the assumptions required in order to enumerate when performing
an interleaving factor strategy. - The
TileScopePackhas a new methodmake_interleavingwhich by will change
any factor strategy in the pack to allow interleaving. The default setting is
for tracked, and so the assumption strategies are also added. This can be
turned off with the flagtracked=False. - The
possible_parametersmethod onTilingallowing for sanity checking
specifications with multiple variables. InsertionEncodingVerificationStrategywas added to verification expansion
packs.forward_map_assumptionmethod onTiling.
Changed
- The definition of a local
TrackingAssumptioninLocalEnumerationnow says
it is local if every gp in it is local (before it was they all used the same
single cell). - the default in
LocalVerificationStrategyis nowno_factors=False.
Fixed
- untracked fusion packs don't add assumption strategies
- the length parameter for
all_the_strategiesis passed correctly to the
requirement insertion strategy. - use fusion on positive
Av(123)when expanding 1x1 verified classes - fix bug that prevented applying all eight symmetries
- fix assumption mapping bug in
FusionStrategy - fix
__repr__inFusionStrategy