cperms_ins_enc
Enumerating Cayley permutations with the insertion encoding
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (10.9%) to scientific vocabulary
Last synced: 9 months ago
·
JSON representation
·
Repository
Enumerating Cayley permutations with the insertion encoding
Basic Info
- Host: GitHub
- Owner: Ollson2921
- Language: Python
- Default Branch: main
- Size: 408 KB
Statistics
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
- Releases: 0
Created over 1 year ago
· Last pushed 10 months ago
Metadata Files
Readme
Citation
README.rst
###############################
cperms_ins_enc
###############################
cperms_ins_enc is a python library for enumerating Cayley permutations with the insertion encoding.
A Cayley permutation is a word `π ∈ ℕ*` such that every number between 1 and the maximum value of `π` appears at least once. Cayley permutations can be seen as a generalisation of permutations where repeated values are allowed. Definitions of pattern containment and Cayley permutation classes follow the same ideas as defined for permutations where the patterns contained are also Cayley permutations, so the Cayley permutation class Av(11) describes all permutations.
There are two types of insertion encoding for enumerating Cayley permutations. The vertical insertion encoding inserts new maxima in the Cayley permutation and horizontal insertion encoding inserts new rightmost values.
If you need support, you can join us in our `Discord support server`_.
.. _Discord support server: https://discord.gg/ngPZVT5
==========
Installing
==========
To install cperms_ins_enc on your system, run the following after cloning the repository:
.. code-block:: bash
./setup.py
It is also possible to install cperms_ins_enc in development mode to work on the
source code, in which case you run the following after cloning the repository:
.. code-block:: bash
./setup.py develop
========================
Using cperms_ins_enc
========================
The cperms_ins_enc module uses the comb_spec_searcher module. To find a specification for a set of pattern avoiding Cayley permutations we first create a searcher. There are two different types, one for vertical insertion encoding and one for horizontal insertion encoding.
.. code-block:: python
>>> from cperms_ins_enc import VerticalSearcher, HorizontalSearcher
Each type can enumerate different classes of Cayley permutations. There is a linear time check in the ``check_can_enumerate`` file in the ``examples`` folder to determine if a basis can be enumerated with either type of insertion encoding, where a basis is a string of Cayley permutations.
.. code-block:: python
>>> from cperms_ins_enc import regular_vertical_insertion_encoding, regular_horizontal_insertion_encoding
>>> basis = "231, 312, 2121"
>>> print("Can enumerate with vertical insertion encoding:", regular_vertical_insertion_encoding(basis))
>>> print("Can enumerate with horizontal insertion encoding:", regular_horizontal_insertion_encoding(basis))
Can enumerate with vertical insertion encoding: True
Can enumerate with horizontal insertion encoding: True
The rest of this README will be an example of using ``VerticalSearcher`` to enumerate the class of hare pop-stack sortable Cayley permutations. The process is the same for any other class by changing the basis and can be done with ``HorizontalSearcher`` by replacing vertical with horizontal throughout.
We initialise ``VerticalSearcher`` with the basis.
.. code-block:: python
>>> basis = "231, 312, 2121"
>>> searcher = VerticalSearcher(basis)
Calling the auto_search function on ``VerticalSearcher`` finds the specification for the class.
.. code-block:: python
>>> spec = VerticalSearcher(basis).auto_search(max_expansion_time=600)
[I 250411 11:33:48 comb_spec_searcher:514] Auto search started
Initialising CombSpecSearcher for the combinatorial class:
+---+
| 0 |
+---+
Key:
0: Av(120,201,1010)
Crossing obstructions:
Looking for recursive combinatorial specification with the strategies:
Inferral: Remove empty rows and columns
Initial: Factor the tiling into factors, Make columns positive
Verification: verify atoms
Set 1: Place next point of insertion encoding
[I 250411 11:33:49 comb_spec_searcher:605] No more classes to expand.
[I 250411 11:33:49 comb_spec_searcher:553] Specification detected.
[I 250411 11:33:49 base:306] Minimizing for 0 seconds.
[I 250411 11:33:49 base:267] Found specification with 16 rules.
[I 250411 11:33:50 comb_spec_searcher:469] Specification built
Time taken: 0:00:01
CSS status:
Total time accounted for: 0:00:00
Number of Number of
applications Time spent Percentage rules
-------------------------------------- -------------- ------------ ------------ -----------
verify atoms 47 0:00:00 0% 2
Remove empty rows and columns 32 0:00:00 2% 26
has specification 13 0:00:00 0% -
Factor the tiling into factors 19 0:00:00 2% 5
Make columns positive 14 0:00:00 2% 8
add rule 47 0:00:00 0% -
Place next point of insertion encoding 6 0:00:00 92% 6
ClassDB status:
Total number of combinatorial classes found is 54
is_empty check applied 28 time. Time spent: 0:00:00
Queue status (currently on level 4):
Queue Size
--------------- ------
working 0
current (set 1) 0
next 0
The size of the current queues at each level: 2, 5, 11, 5
RuleDB status:
Total number
--------------------------------------- --------------
Combinatorial rules 16
Equivalence rules 31
Combintorial rules up to equivalence 16
Strategy verified combinatorial classes 2
Verified combinatorial classes 16
combinatorial classes up to equivalence 16
Called find equiv path 13 times, for total time of 0.0 seconds.
Memory Status:
------------ --------
OS Allocated 66.8 MiB
CSS 354 KiB
ClassDB 296 KiB
ClassQueue 11 KiB
RuleDB 354 KiB
------------ --------
Specification found has 43 rules
The specification returned is a ``CombinatorialSpecification`` from the comb_spec_searcher module. To view these you can either print the specification for a string representation or use the show method to visualise the specification in a proof tree format.
.. code-block:: python
>>> print(spec)
A combinatorial specification with 43 rules.
-----------
0 -> (1, 3)
Either avoid or contain frozenset({GriddedCayleyPerm(0, ((0, 0),))})
+---+ +---+ +---+
| 0 | = | # | + | 0 |
+---+ +---+ +---+
Key: Key: Key:
0: Av(120,201,1010) Crossing obstructions: 0: Av(120,201,1010)
Crossing obstructions: Crossing obstructions:
Requirements 0:
0: ((0, 0))
-----
1 = 2
Remove empty rows and columns
+---+ +---+
| # | = | # |
+---+ +---+
Key: Dimensions (0, 0)
Crossing obstructions: Key:
Crossing obstructions:
-------
2 -> ()
is atom
+---+
| # |
+---+
Dimensions (0, 0)
Key:
Crossing obstructions:
-----
3 = 4
Placed the point of the requirement (GriddedCayleyPerm(0, ((0, 0),)),) at indices (0,) in direction 4 but only child and index 1 is non-empty, then Remove empty rows and columns
+---+ +---+---+---+ +---+---+---+
| 0 | = | 0 | # | 2 | = | 0 | # | 2 |
+---+ +---+---+---+ +---+---+---+
Key: | # | ● | 1 | | # | ● | 1 |
0: Av(120,201,1010) +---+---+---+ +---+---+---+
Crossing obstructions: | # | # | # | Key:
Requirements 0: +---+---+---+ 0: Av(01)
0: ((0, 0)) Key: 1: Av(01,10)
0: Av(01) 2: Av(120,201,1010)
1: Av(01,10) Crossing obstructions:
2: Av(120,201,1010) 01: ((1, 0),(2, 0))
Crossing obstructions: 10: ((0, 1),(2, 1))
01: ((1, 1),(2, 1)) 10: ((1, 0),(2, 0))
10: ((0, 2),(2, 2)) 110: ((0, 1),(2, 1),(2, 0))
10: ((1, 1),(2, 1)) 120: ((0, 1),(2, 1),(2, 0))
110: ((0, 2),(2, 2),(2, 1)) 120: ((2, 1),(2, 1),(2, 0))
120: ((0, 2),(2, 2),(2, 1)) 201: ((2, 1),(2, 0),(2, 1))
120: ((2, 2),(2, 2),(2, 1)) 1010: ((2, 1),(2, 0),(2, 1),(2, 0))
201: ((2, 2),(2, 1),(2, 2)) Requirements 0:
1010: ((2, 2),(2, 1),(2, 2),(2, 1)) 0: ((1, 0))
Requirements 0:
0: ((1, 1))
------------
4 -> (5, 20)
Factor the tiling into factors
+---+---+---+ +---+---+---+ +---+---+---+
| 0 | # | 2 | = | 0 | # | 2 | x | # | # | # |
+---+---+---+ +---+---+---+ +---+---+---+
| # | ● | 1 | | # | # | 1 | | # | ● | # |
+---+---+---+ +---+---+---+ +---+---+---+
Key: Key: Key:
0: Av(01) 0: Av(01) Crossing obstructions:
1: Av(01,10) 1: Av(01,10) Requirements 0:
2: Av(120,201,1010) 2: Av(120,201,1010) 0: ((1, 0))
Crossing obstructions: Crossing obstructions:
01: ((1, 0),(2, 0)) 10: ((0, 1),(2, 1))
10: ((0, 1),(2, 1)) 110: ((0, 1),(2, 1),(2, 0))
10: ((1, 0),(2, 0)) 120: ((0, 1),(2, 1),(2, 0))
110: ((0, 1),(2, 1),(2, 0)) 120: ((2, 1),(2, 1),(2, 0))
120: ((0, 1),(2, 1),(2, 0)) 201: ((2, 1),(2, 0),(2, 1))
120: ((2, 1),(2, 1),(2, 0)) 1010: ((2, 1),(2, 0),(2, 1),(2, 0))
201: ((2, 1),(2, 0),(2, 1))
1010: ((2, 1),(2, 0),(2, 1),(2, 0))
Requirements 0:
0: ((1, 0))
-----
5 = 6
Remove empty rows and columns
+---+---+---+ +---+---+
| 0 | # | 2 | = | 0 | 2 |
+---+---+---+ +---+---+
| # | # | 1 | | # | 1 |
+---+---+---+ +---+---+
Key: Key:
0: Av(01) 0: Av(01)
1: Av(01,10) 1: Av(01,10)
2: Av(120,201,1010) 2: Av(120,201,1010)
Crossing obstructions: Crossing obstructions:
10: ((0, 1),(2, 1)) 10: ((0, 1),(1, 1))
110: ((0, 1),(2, 1),(2, 0)) 110: ((0, 1),(1, 1),(1, 0))
120: ((0, 1),(2, 1),(2, 0)) 120: ((0, 1),(1, 1),(1, 0))
120: ((2, 1),(2, 1),(2, 0)) 120: ((1, 1),(1, 1),(1, 0))
201: ((2, 1),(2, 0),(2, 1)) 201: ((1, 1),(1, 0),(1, 1))
1010: ((2, 1),(2, 0),(2, 1),(2, 0)) 1010: ((1, 1),(1, 0),(1, 1),(1, 0))
------------
6 -> (7, 14)
Either avoid or contain frozenset({GriddedCayleyPerm(0, ((0, 1),))})
+---+---+ +---+---+ +---+---+
| 0 | 2 | = | # | 1 | + | 0 | 2 |
+---+---+ +---+---+ +---+---+
| # | 1 | | # | 0 | | # | 1 |
+---+---+ +---+---+ +---+---+
Key: Key: Key:
0: Av(01) 0: Av(01,10) 0: Av(01)
1: Av(01,10) 1: Av(120,201,1010) 1: Av(01,10)
2: Av(120,201,1010) Crossing obstructions: 2: Av(120,201,1010)
Crossing obstructions: 120: ((1, 1),(1, 1),(1, 0)) Crossing obstructions:
10: ((0, 1),(1, 1)) 201: ((1, 1),(1, 0),(1, 1)) 10: ((0, 1),(1, 1))
110: ((0, 1),(1, 1),(1, 0)) 1010: ((1, 1),(1, 0),(1, 1),(1, 0)) 110: ((0, 1),(1, 1),(1, 0))
120: ((0, 1),(1, 1),(1, 0)) 120: ((0, 1),(1, 1),(1, 0))
120: ((1, 1),(1, 1),(1, 0)) 120: ((1, 1),(1, 1),(1, 0))
201: ((1, 1),(1, 0),(1, 1)) 201: ((1, 1),(1, 0),(1, 1))
1010: ((1, 1),(1, 0),(1, 1),(1, 0)) 1010: ((1, 1),(1, 0),(1, 1),(1, 0))
Requirements 0:
0: ((0, 1))
-----
7 = 8
Remove empty rows and columns
+---+---+ +---+
| # | 1 | = | 1 |
+---+---+ +---+
| # | 0 | | 0 |
+---+---+ +---+
Key: Key:
0: Av(01,10) 0: Av(01,10)
1: Av(120,201,1010) 1: Av(120,201,1010)
Crossing obstructions: Crossing obstructions:
120: ((1, 1),(1, 1),(1, 0)) 120: ((0, 1),(0, 1),(0, 0))
201: ((1, 1),(1, 0),(1, 1)) 201: ((0, 1),(0, 0),(0, 1))
1010: ((1, 1),(1, 0),(1, 1),(1, 0)) 1010: ((0, 1),(0, 0),(0, 1),(0, 0))
------------
8 -> (9, 10)
Either avoid or contain frozenset({GriddedCayleyPerm(0, ((0, 1),)), GriddedCayleyPerm(0, ((0, 0),))})
+---+ +---+ +---+
| 1 | = | # | + | 1 |
+---+ +---+ +---+
| 0 | | # | | 0 |
+---+ +---+ +---+
Key: Key: Key:
0: Av(01,10) Crossing obstructions: 0: Av(01,10)
1: Av(120,201,1010) 1: Av(120,201,1010)
Crossing obstructions: Crossing obstructions:
120: ((0, 1),(0, 1),(0, 0)) 120: ((0, 1),(0, 1),(0, 0))
201: ((0, 1),(0, 0),(0, 1)) 201: ((0, 1),(0, 0),(0, 1))
1010: ((0, 1),(0, 0),(0, 1),(0, 0)) 1010: ((0, 1),(0, 0),(0, 1),(0, 0))
Requirements 0:
0: ((0, 0))
0: ((0, 1))
-----
9 = 2
Remove empty rows and columns
+---+ +---+
| # | = | # |
+---+ +---+
| # | Dimensions (0, 0)
+---+ Key:
Key: Crossing obstructions:
Crossing obstructions:
------------------
10 -> (11, 12, 13)
Placed the point of the requirement (GriddedCayleyPerm(0, ((0, 1),)), GriddedCayleyPerm(0, ((0, 0),))) at indices (0, 0) in direction 4
+---+ +---+ +---+---+---+ +---+---+---+
| 1 | = | ∅ | + | 0 | # | 2 | + | 0 | # | 2 |
+---+ +---+ +---+---+---+ +---+---+---+
| 0 | | ∅ | | # | # | # | | # | ● | 1 |
+---+ +---+ +---+---+---+ +---+---+---+
Key: Key: | # | ● | 1 | | # | # | # |
0: Av(01,10) ∅: Av(ε) +---+---+---+ +---+---+---+
1: Av(120,201,1010) Crossing obstructions: | # | # | # | | # | # | # |
Crossing obstructions: Requirements 0: +---+---+---+ +---+---+---+
120: ((0, 1),(0, 1),(0, 0)) Key: Key:
201: ((0, 1),(0, 0),(0, 1)) 0: Av(01) 0: Av(01)
1010: ((0, 1),(0, 0),(0, 1),(0, 0)) 1: Av(01,10) 1: Av(01,10)
Requirements 0: 2: Av(120,201,1010) 2: Av(120,201,1010)
0: ((0, 0)) Crossing obstructions: Crossing obstructions:
0: ((0, 1)) 01: ((1, 1),(2, 1)) 01: ((1, 2),(2, 2))
10: ((0, 3),(2, 3)) 10: ((0, 3),(2, 3))
10: ((1, 1),(2, 1)) 10: ((1, 2),(2, 2))
110: ((0, 3),(2, 3),(2, 1)) 110: ((0, 3),(2, 3),(2, 2))
120: ((0, 3),(2, 3),(2, 1)) 120: ((0, 3),(2, 3),(2, 2))
120: ((2, 3),(2, 3),(2, 1)) 120: ((2, 3),(2, 3),(2, 2))
201: ((2, 3),(2, 1),(2, 3)) 201: ((2, 3),(2, 2),(2, 3))
1010: ((2, 3),(2, 1),(2, 3),(2, 1)) 1010: ((2, 3),(2, 2),(2, 3),(2, 2))
Requirements 0: Requirements 0:
0: ((1, 1)) 0: ((1, 2))
--------
11 -> ()
is empty
+---+
| ∅ |
+---+
| ∅ |
+---+
Key:
∅: Av(ε)
Crossing obstructions:
Requirements 0:
------
12 = 4
Remove empty rows and columns
+---+---+---+ +---+---+---+
| 0 | # | 2 | = | 0 | # | 2 |
+---+---+---+ +---+---+---+
| # | # | # | | # | ● | 1 |
+---+---+---+ +---+---+---+
| # | ● | 1 | Key:
+---+---+---+ 0: Av(01)
| # | # | # | 1: Av(01,10)
+---+---+---+ 2: Av(120,201,1010)
Key: Crossing obstructions:
0: Av(01) 01: ((1, 0),(2, 0))
1: Av(01,10) 10: ((0, 1),(2, 1))
2: Av(120,201,1010) 10: ((1, 0),(2, 0))
Crossing obstructions: 110: ((0, 1),(2, 1),(2, 0))
01: ((1, 1),(2, 1)) 120: ((0, 1),(2, 1),(2, 0))
10: ((0, 3),(2, 3)) 120: ((2, 1),(2, 1),(2, 0))
10: ((1, 1),(2, 1)) 201: ((2, 1),(2, 0),(2, 1))
110: ((0, 3),(2, 3),(2, 1)) 1010: ((2, 1),(2, 0),(2, 1),(2, 0))
120: ((0, 3),(2, 3),(2, 1)) Requirements 0:
120: ((2, 3),(2, 3),(2, 1)) 0: ((1, 0))
201: ((2, 3),(2, 1),(2, 3))
1010: ((2, 3),(2, 1),(2, 3),(2, 1))
Requirements 0:
0: ((1, 1))
------
13 = 4
Remove empty rows and columns
+---+---+---+ +---+---+---+
| 0 | # | 2 | = | 0 | # | 2 |
+---+---+---+ +---+---+---+
| # | ● | 1 | | # | ● | 1 |
+---+---+---+ +---+---+---+
| # | # | # | Key:
+---+---+---+ 0: Av(01)
| # | # | # | 1: Av(01,10)
+---+---+---+ 2: Av(120,201,1010)
Key: Crossing obstructions:
0: Av(01) 01: ((1, 0),(2, 0))
1: Av(01,10) 10: ((0, 1),(2, 1))
2: Av(120,201,1010) 10: ((1, 0),(2, 0))
Crossing obstructions: 110: ((0, 1),(2, 1),(2, 0))
01: ((1, 2),(2, 2)) 120: ((0, 1),(2, 1),(2, 0))
10: ((0, 3),(2, 3)) 120: ((2, 1),(2, 1),(2, 0))
10: ((1, 2),(2, 2)) 201: ((2, 1),(2, 0),(2, 1))
110: ((0, 3),(2, 3),(2, 2)) 1010: ((2, 1),(2, 0),(2, 1),(2, 0))
120: ((0, 3),(2, 3),(2, 2)) Requirements 0:
120: ((2, 3),(2, 3),(2, 2)) 0: ((1, 0))
201: ((2, 3),(2, 2),(2, 3))
1010: ((2, 3),(2, 2),(2, 3),(2, 2))
Requirements 0:
0: ((1, 2))
--------------
14 -> (15, 28)
Either avoid or contain frozenset({GriddedCayleyPerm(0, ((1, 1),)), GriddedCayleyPerm(0, ((1, 0),))})
+---+---+ +---+---+ +---+---+
| 0 | 2 | = | 0 | # | + | 0 | 2 |
+---+---+ +---+---+ +---+---+
| # | 1 | | # | # | | # | 1 |
+---+---+ +---+---+ +---+---+
Key: Key: Key:
0: Av(01) 0: Av(01) 0: Av(01)
1: Av(01,10) Crossing obstructions: 1: Av(01,10)
2: Av(120,201,1010) Requirements 0: 2: Av(120,201,1010)
Crossing obstructions: 0: ((0, 1)) Crossing obstructions:
10: ((0, 1),(1, 1)) 10: ((0, 1),(1, 1))
110: ((0, 1),(1, 1),(1, 0)) 110: ((0, 1),(1, 1),(1, 0))
120: ((0, 1),(1, 1),(1, 0)) 120: ((0, 1),(1, 1),(1, 0))
120: ((1, 1),(1, 1),(1, 0)) 120: ((1, 1),(1, 1),(1, 0))
201: ((1, 1),(1, 0),(1, 1)) 201: ((1, 1),(1, 0),(1, 1))
1010: ((1, 1),(1, 0),(1, 1),(1, 0)) 1010: ((1, 1),(1, 0),(1, 1),(1, 0))
Requirements 0: Requirements 0:
0: ((0, 1)) 0: ((0, 1))
Requirements 1:
0: ((1, 0))
0: ((1, 1))
-------
15 = 16
Remove empty rows and columns
+---+---+ +---+
| 0 | # | = | 0 |
+---+---+ +---+
| # | # | Key:
+---+---+ 0: Av(01)
Key: Crossing obstructions:
0: Av(01) Requirements 0:
Crossing obstructions: 0: ((0, 0))
Requirements 0:
0: ((0, 1))
-----------
16 -> (17,)
Placed the point of the requirement (GriddedCayleyPerm(0, ((0, 0),)),) at indices (0,) in direction 4 but only child and index 1 is non-empty, then Remove empty rows and columns
+---+ +---+---+---+ +---+---+---+
| 0 | = | 0 | # | # | = | 0 | # | # |
+---+ +---+---+---+ +---+---+---+
Key: | # | ● | 1 | | # | ● | 1 |
0: Av(01) +---+---+---+ +---+---+---+
Crossing obstructions: | # | # | # | Key:
Requirements 0: +---+---+---+ 0: Av(01)
0: ((0, 0)) Key: 1: Av(01,10)
0: Av(01) Crossing obstructions:
1: Av(01,10) 01: ((1, 0),(2, 0))
Crossing obstructions: 10: ((1, 0),(2, 0))
01: ((1, 1),(2, 1)) Requirements 0:
10: ((1, 1),(2, 1)) 0: ((1, 0))
Requirements 0:
0: ((1, 1))
------------------
17 -> (18, 20, 22)
Factor the tiling into factors
+---+---+---+ +---+---+---+ +---+---+---+ +---+---+---+
| 0 | # | # | = | 0 | # | # | x | # | # | # | x | # | # | # |
+---+---+---+ +---+---+---+ +---+---+---+ +---+---+---+
| # | ● | 1 | | # | # | # | | # | ● | # | | # | # | 0 |
+---+---+---+ +---+---+---+ +---+---+---+ +---+---+---+
Key: Key: Key: Key:
0: Av(01) 0: Av(01) Crossing obstructions: 0: Av(01,10)
1: Av(01,10) Crossing obstructions: Requirements 0: Crossing obstructions:
Crossing obstructions: 0: ((1, 0))
01: ((1, 0),(2, 0))
10: ((1, 0),(2, 0))
Requirements 0:
0: ((1, 0))
-------
18 = 19
Remove empty rows and columns
+---+---+---+ +---+
| 0 | # | # | = | 0 |
+---+---+---+ +---+
| # | # | # | Key:
+---+---+---+ 0: Av(01)
Key: Crossing obstructions:
0: Av(01)
Crossing obstructions:
-------------
19 -> (1, 16)
Either avoid or contain frozenset({GriddedCayleyPerm(0, ((0, 0),))})
+---+ +---+ +---+
| 0 | = | # | + | 0 |
+---+ +---+ +---+
Key: Key: Key:
0: Av(01) Crossing obstructions: 0: Av(01)
Crossing obstructions: Crossing obstructions:
Requirements 0:
0: ((0, 0))
-------
20 = 21
Remove empty rows and columns
+---+---+---+ +---+
| # | # | # | = | ● |
+---+---+---+ +---+
| # | ● | # | Key:
+---+---+---+ Crossing obstructions:
Key: Requirements 0:
Crossing obstructions: 0: ((0, 0))
Requirements 0:
0: ((1, 0))
--------
21 -> ()
is atom
+---+
| ● |
+---+
Key:
Crossing obstructions:
Requirements 0:
0: ((0, 0))
-------
22 = 23
Remove empty rows and columns
+---+---+---+ +---+
| # | # | # | = | 0 |
+---+---+---+ +---+
| # | # | 0 | Key:
+---+---+---+ 0: Av(01,10)
Key: Crossing obstructions:
0: Av(01,10)
Crossing obstructions:
-------------
23 -> (1, 24)
Either avoid or contain frozenset({GriddedCayleyPerm(0, ((0, 0),))})
+---+ +---+ +---+
| 0 | = | # | + | 0 |
+---+ +---+ +---+
Key: Key: Key:
0: Av(01,10) Crossing obstructions: 0: Av(01,10)
Crossing obstructions: Crossing obstructions:
Requirements 0:
0: ((0, 0))
-------
24 = 25
Placed the point of the requirement (GriddedCayleyPerm(0, ((0, 0),)),) at indices (0,) in direction 4 but only child and index 1 is non-empty, then Remove empty rows and columns
+---+ +---+---+---+ +---+---+
| 0 | = | # | # | # | = | ● | 0 |
+---+ +---+---+---+ +---+---+
Key: | # | ● | 0 | Key:
0: Av(01,10) +---+---+---+ 0: Av(01,10)
Crossing obstructions: | # | # | # | Crossing obstructions:
Requirements 0: +---+---+---+ 01: ((0, 0),(1, 0))
0: ((0, 0)) Key: 10: ((0, 0),(1, 0))
0: Av(01,10) Requirements 0:
Crossing obstructions: 0: ((0, 0))
01: ((1, 1),(2, 1))
10: ((1, 1),(2, 1))
Requirements 0:
0: ((1, 1))
--------------
25 -> (26, 27)
Factor the tiling into factors
+---+---+ +---+---+ +---+---+
| ● | 0 | = | ● | # | x | # | 0 |
+---+---+ +---+---+ +---+---+
Key: Key: Key:
0: Av(01,10) Crossing obstructions: 0: Av(01,10)
Crossing obstructions: Requirements 0: Crossing obstructions:
01: ((0, 0),(1, 0)) 0: ((0, 0))
10: ((0, 0),(1, 0))
Requirements 0:
0: ((0, 0))
-------
26 = 21
Remove empty rows and columns
+---+---+ +---+
| ● | # | = | ● |
+---+---+ +---+
Key: Key:
Crossing obstructions: Crossing obstructions:
Requirements 0: Requirements 0:
0: ((0, 0)) 0: ((0, 0))
-------
27 = 23
Remove empty rows and columns
+---+---+ +---+
| # | 0 | = | 0 |
+---+---+ +---+
Key: Key:
0: Av(01,10) 0: Av(01,10)
Crossing obstructions: Crossing obstructions:
----------------------
28 -> (29, 30, 38, 42)
Placed the point of the requirement (GriddedCayleyPerm(0, ((0, 1),)), GriddedCayleyPerm(0, ((1, 0),)), GriddedCayleyPerm(0, ((1, 1),))) at indices (0, 0, 0) in direction 4
+---+---+ +---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
| 0 | 2 | = | ∅ | ∅ | + | 0 | # | # | 2 | + | 0 | 0 | # | 2 | + | ∅ | ∅ | ∅ | ∅ |
+---+---+ +---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
| # | 1 | | ∅ | ∅ | | # | ● | 1 | 1 | | # | # | # | # | | ∅ | ∅ | ∅ | ∅ |
+---+---+ +---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
Key: Key: | # | # | # | # | | # | # | ● | 1 | | ∅ | ∅ | ∅ | ∅ |
0: Av(01) ∅: Av(ε) +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
1: Av(01,10) Crossing obstructions: | # | # | # | # | | # | # | # | # | | ∅ | ∅ | ∅ | ∅ |
2: Av(120,201,1010) Requirements 0: +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
Crossing obstructions: Key: Key: Key:
10: ((0, 1),(1, 1)) 0: Av(01) 0: Av(01) ∅: Av(ε)
110: ((0, 1),(1, 1),(1, 0)) 1: Av(01,10) 1: Av(01,10) Crossing obstructions:
120: ((0, 1),(1, 1),(1, 0)) 2: Av(120,201,1010) 2: Av(120,201,1010) Requirements 0:
120: ((1, 1),(1, 1),(1, 0)) Crossing obstructions: Crossing obstructions:
201: ((1, 1),(1, 0),(1, 1)) 01: ((1, 2),(2, 2)) 00: ((0, 3),(1, 3))
1010: ((1, 1),(1, 0),(1, 1),(1, 0)) 01: ((1, 2),(3, 2)) 01: ((0, 3),(1, 3))
Requirements 0: 01: ((2, 2),(3, 2)) 01: ((2, 1),(3, 1))
0: ((0, 1)) 10: ((0, 3),(3, 2)) 10: ((0, 3),(1, 3))
Requirements 1: 10: ((0, 3),(3, 3)) 10: ((0, 3),(3, 3))
0: ((1, 0)) 10: ((1, 2),(2, 2)) 10: ((1, 3),(3, 3))
0: ((1, 1)) 10: ((1, 2),(3, 2)) 10: ((2, 1),(3, 1))
10: ((2, 2),(3, 2)) 110: ((0, 3),(3, 3),(3, 1))
120: ((3, 3),(3, 3),(3, 2)) 110: ((1, 3),(3, 3),(3, 1))
201: ((3, 3),(3, 2),(3, 3)) 120: ((0, 3),(3, 3),(3, 1))
1010: ((3, 3),(3, 2),(3, 3),(3, 2)) 120: ((1, 3),(3, 3),(3, 1))
Requirements 0: 120: ((3, 3),(3, 3),(3, 1))
0: ((1, 2)) 201: ((3, 3),(3, 1),(3, 3))
Requirements 1: 1010: ((3, 3),(3, 1),(3, 3),(3, 1))
0: ((3, 2)) Requirements 0:
0: ((3, 3)) 0: ((0, 3))
Requirements 1:
0: ((2, 1))
--------
29 -> ()
is empty
+---+---+
| ∅ | ∅ |
+---+---+
| ∅ | ∅ |
+---+---+
Key:
∅: Av(ε)
Crossing obstructions:
Requirements 0:
-------
30 = 31
Remove empty rows and columns
+---+---+---+---+ +---+---+---+---+
| 0 | # | # | 2 | = | 0 | # | # | 2 |
+---+---+---+---+ +---+---+---+---+
| # | ● | 1 | 1 | | # | ● | 1 | 1 |
+---+---+---+---+ +---+---+---+---+
| # | # | # | # | Key:
+---+---+---+---+ 0: Av(01)
| # | # | # | # | 1: Av(01,10)
+---+---+---+---+ 2: Av(120,201,1010)
Key: Crossing obstructions:
0: Av(01) 01: ((1, 0),(2, 0))
1: Av(01,10) 01: ((1, 0),(3, 0))
2: Av(120,201,1010) 01: ((2, 0),(3, 0))
Crossing obstructions: 10: ((0, 1),(3, 0))
01: ((1, 2),(2, 2)) 10: ((0, 1),(3, 1))
01: ((1, 2),(3, 2)) 10: ((1, 0),(2, 0))
01: ((2, 2),(3, 2)) 10: ((1, 0),(3, 0))
10: ((0, 3),(3, 2)) 10: ((2, 0),(3, 0))
10: ((0, 3),(3, 3)) 120: ((3, 1),(3, 1),(3, 0))
10: ((1, 2),(2, 2)) 201: ((3, 1),(3, 0),(3, 1))
10: ((1, 2),(3, 2)) 1010: ((3, 1),(3, 0),(3, 1),(3, 0))
10: ((2, 2),(3, 2)) Requirements 0:
120: ((3, 3),(3, 3),(3, 2)) 0: ((1, 0))
201: ((3, 3),(3, 2),(3, 3)) Requirements 1:
1010: ((3, 3),(3, 2),(3, 3),(3, 2)) 0: ((3, 0))
Requirements 0: 0: ((3, 1))
0: ((1, 2))
Requirements 1:
0: ((3, 2))
0: ((3, 3))
------------------
31 -> (32, 36, 37)
Factor the tiling into factors
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
| 0 | # | # | 2 | = | 0 | # | # | 2 | x | # | # | # | # | x | # | # | # | # |
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
| # | ● | 1 | 1 | | # | # | # | 1 | | # | ● | # | # | | # | # | 0 | # |
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
Key: Key: Key: Key:
0: Av(01) 0: Av(01) Crossing obstructions: 0: Av(01,10)
1: Av(01,10) 1: Av(01,10) Requirements 0: Crossing obstructions:
2: Av(120,201,1010) 2: Av(120,201,1010) 0: ((1, 0))
Crossing obstructions: Crossing obstructions:
01: ((1, 0),(2, 0)) 10: ((0, 1),(3, 0))
01: ((1, 0),(3, 0)) 10: ((0, 1),(3, 1))
01: ((2, 0),(3, 0)) 120: ((3, 1),(3, 1),(3, 0))
10: ((0, 1),(3, 0)) 201: ((3, 1),(3, 0),(3, 1))
10: ((0, 1),(3, 1)) 1010: ((3, 1),(3, 0),(3, 1),(3, 0))
10: ((1, 0),(2, 0)) Requirements 0:
10: ((1, 0),(3, 0)) 0: ((3, 0))
10: ((2, 0),(3, 0)) 0: ((3, 1))
120: ((3, 1),(3, 1),(3, 0))
201: ((3, 1),(3, 0),(3, 1))
1010: ((3, 1),(3, 0),(3, 1),(3, 0))
Requirements 0:
0: ((1, 0))
Requirements 1:
0: ((3, 0))
0: ((3, 1))
-------
32 = 33
Remove empty rows and columns
+---+---+---+---+ +---+---+
| 0 | # | # | 2 | = | 0 | 2 |
+---+---+---+---+ +---+---+
| # | # | # | 1 | | # | 1 |
+---+---+---+---+ +---+---+
Key: Key:
0: Av(01) 0: Av(01)
1: Av(01,10) 1: Av(01,10)
2: Av(120,201,1010) 2: Av(120,201,1010)
Crossing obstructions: Crossing obstructions:
10: ((0, 1),(3, 0)) 10: ((0, 1),(1, 0))
10: ((0, 1),(3, 1)) 10: ((0, 1),(1, 1))
120: ((3, 1),(3, 1),(3, 0)) 120: ((1, 1),(1, 1),(1, 0))
201: ((3, 1),(3, 0),(3, 1)) 201: ((1, 1),(1, 0),(1, 1))
1010: ((3, 1),(3, 0),(3, 1),(3, 0)) 1010: ((1, 1),(1, 0),(1, 1),(1, 0))
Requirements 0: Requirements 0:
0: ((3, 0)) 0: ((1, 0))
0: ((3, 1)) 0: ((1, 1))
--------------
33 -> (34, 35)
Either avoid or contain frozenset({GriddedCayleyPerm(0, ((0, 1),))})
+---+---+ +---+---+ +---+---+
| 0 | 2 | = | # | 1 | + | 0 | 1 |
+---+---+ +---+---+ +---+---+
| # | 1 | | # | 0 | | # | # |
+---+---+ +---+---+ +---+---+
Key: Key: Key:
0: Av(01) 0: Av(01,10) 0: Av(01)
1: Av(01,10) 1: Av(120,201,1010) 1: Av(120,201,1010)
2: Av(120,201,1010) Crossing obstructions: Crossing obstructions:
Crossing obstructions: 120: ((1, 1),(1, 1),(1, 0)) 10: ((0, 1),(1, 1))
10: ((0, 1),(1, 0)) 201: ((1, 1),(1, 0),(1, 1)) Requirements 0:
10: ((0, 1),(1, 1)) 1010: ((1, 1),(1, 0),(1, 1),(1, 0)) 0: ((0, 1))
120: ((1, 1),(1, 1),(1, 0)) Requirements 0: Requirements 1:
201: ((1, 1),(1, 0),(1, 1)) 0: ((1, 0)) 0: ((1, 1))
1010: ((1, 1),(1, 0),(1, 1),(1, 0)) 0: ((1, 1))
Requirements 0:
0: ((1, 0))
0: ((1, 1))
-------
34 = 10
Remove empty rows and columns
+---+---+ +---+
| # | 1 | = | 1 |
+---+---+ +---+
| # | 0 | | 0 |
+---+---+ +---+
Key: Key:
0: Av(01,10) 0: Av(01,10)
1: Av(120,201,1010) 1: Av(120,201,1010)
Crossing obstructions: Crossing obstructions:
120: ((1, 1),(1, 1),(1, 0)) 120: ((0, 1),(0, 1),(0, 0))
201: ((1, 1),(1, 0),(1, 1)) 201: ((0, 1),(0, 0),(0, 1))
1010: ((1, 1),(1, 0),(1, 1),(1, 0)) 1010: ((0, 1),(0, 0),(0, 1),(0, 0))
Requirements 0: Requirements 0:
0: ((1, 0)) 0: ((0, 0))
0: ((1, 1)) 0: ((0, 1))
-------
35 = 31
Remove empty rows and columns, then Placed the point of the requirement (GriddedCayleyPerm(0, ((1, 0),)), GriddedCayleyPerm(0, ((0, 0),))) at indices (0, 0) in direction 4 but only child and index 1 is non-empty, then Remove empty rows and columns
+---+---+ +---+---+ +---+---+---+---+ +---+---+---+---+
| 0 | 1 | = | 0 | 1 | = | 0 | # | # | 2 | = | 0 | # | # | 2 |
+---+---+ +---+---+ +---+---+---+---+ +---+---+---+---+
| # | # | Key: | # | ● | 1 | 1 | | # | ● | 1 | 1 |
+---+---+ 0: Av(01) +---+---+---+---+ +---+---+---+---+
Key: 1: Av(120,201,1010) | # | # | # | # | Key:
0: Av(01) Crossing obstructions: +---+---+---+---+ 0: Av(01)
1: Av(120,201,1010) 10: ((0, 0),(1, 0)) Key: 1: Av(01,10)
Crossing obstructions: Requirements 0: 0: Av(01) 2: Av(120,201,1010)
10: ((0, 1),(1, 1)) 0: ((0, 0)) 1: Av(01,10) Crossing obstructions:
Requirements 0: Requirements 1: 2: Av(120,201,1010) 01: ((1, 0),(2, 0))
0: ((0, 1)) 0: ((1, 0)) Crossing obstructions: 01: ((1, 0),(3, 0))
Requirements 1: 01: ((1, 1),(2, 1)) 01: ((2, 0),(3, 0))
0: ((1, 1)) 01: ((1, 1),(3, 1)) 10: ((0, 1),(3, 0))
01: ((2, 1),(3, 1)) 10: ((0, 1),(3, 1))
10: ((0, 2),(3, 1)) 10: ((1, 0),(2, 0))
10: ((0, 2),(3, 2)) 10: ((1, 0),(3, 0))
10: ((1, 1),(2, 1)) 10: ((2, 0),(3, 0))
10: ((1, 1),(3, 1)) 120: ((3, 1),(3, 1),(3, 0))
10: ((2, 1),(3, 1)) 201: ((3, 1),(3, 0),(3, 1))
120: ((3, 2),(3, 2),(3, 1)) 1010: ((3, 1),(3, 0),(3, 1),(3, 0))
201: ((3, 2),(3, 1),(3, 2)) Requirements 0:
1010: ((3, 2),(3, 1),(3, 2),(3, 1)) 0: ((1, 0))
Requirements 0: Requirements 1:
0: ((1, 1)) 0: ((3, 0))
Requirements 1: 0: ((3, 1))
0: ((3, 1))
0: ((3, 2))
-------
36 = 21
Remove empty rows and columns
+---+---+---+---+ +---+
| # | # | # | # | = | ● |
+---+---+---+---+ +---+
| # | ● | # | # | Key:
+---+---+---+---+ Crossing obstructions:
Key: Requirements 0:
Crossing obstructions: 0: ((0, 0))
Requirements 0:
0: ((1, 0))
-------
37 = 23
Remove empty rows and columns
+---+---+---+---+ +---+
| # | # | # | # | = | 0 |
+---+---+---+---+ +---+
| # | # | 0 | # | Key:
+---+---+---+---+ 0: Av(01,10)
Key: Crossing obstructions:
0: Av(01,10)
Crossing obstructions:
-------
38 = 39
Remove empty rows and columns
+---+---+---+---+ +---+---+---+---+
| 0 | 0 | # | 2 | = | 0 | 0 | # | 2 |
+---+---+---+---+ +---+---+---+---+
| # | # | # | # | | # | # | ● | 1 |
+---+---+---+---+ +---+---+---+---+
| # | # | ● | 1 | Key:
+---+---+---+---+ 0: Av(01)
| # | # | # | # | 1: Av(01,10)
+---+---+---+---+ 2: Av(120,201,1010)
Key: Crossing obstructions:
0: Av(01) 00: ((0, 1),(1, 1))
1: Av(01,10) 01: ((0, 1),(1, 1))
2: Av(120,201,1010) 01: ((2, 0),(3, 0))
Crossing obstructions: 10: ((0, 1),(1, 1))
00: ((0, 3),(1, 3)) 10: ((0, 1),(3, 1))
01: ((0, 3),(1, 3)) 10: ((1, 1),(3, 1))
01: ((2, 1),(3, 1)) 10: ((2, 0),(3, 0))
10: ((0, 3),(1, 3)) 110: ((0, 1),(3, 1),(3, 0))
10: ((0, 3),(3, 3)) 110: ((1, 1),(3, 1),(3, 0))
10: ((1, 3),(3, 3)) 120: ((0, 1),(3, 1),(3, 0))
10: ((2, 1),(3, 1)) 120: ((1, 1),(3, 1),(3, 0))
110: ((0, 3),(3, 3),(3, 1)) 120: ((3, 1),(3, 1),(3, 0))
110: ((1, 3),(3, 3),(3, 1)) 201: ((3, 1),(3, 0),(3, 1))
120: ((0, 3),(3, 3),(3, 1)) 1010: ((3, 1),(3, 0),(3, 1),(3, 0))
120: ((1, 3),(3, 3),(3, 1)) Requirements 0:
120: ((3, 3),(3, 3),(3, 1)) 0: ((0, 1))
201: ((3, 3),(3, 1),(3, 3)) Requirements 1:
1010: ((3, 3),(3, 1),(3, 3),(3, 1)) 0: ((2, 0))
Requirements 0:
0: ((0, 3))
Requirements 1:
0: ((2, 1))
--------------
39 -> (40, 41)
Factor the tiling into factors
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+
| 0 | 0 | # | 2 | = | 0 | 0 | # | 2 | x | # | # | # | # |
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+
| # | # | ● | 1 | | # | # | # | 1 | | # | # | ● | # |
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+
Key: Key: Key:
0: Av(01) 0: Av(01) Crossing obstructions:
1: Av(01,10) 1: Av(01,10) Requirements 0:
2: Av(120,201,1010) 2: Av(120,201,1010) 0: ((2, 0))
Crossing obstructions: Crossing obstructions:
00: ((0, 1),(1, 1)) 00: ((0, 1),(1, 1))
01: ((0, 1),(1, 1)) 01: ((0, 1),(1, 1))
01: ((2, 0),(3, 0)) 10: ((0, 1),(1, 1))
10: ((0, 1),(1, 1)) 10: ((0, 1),(3, 1))
10: ((0, 1),(3, 1)) 10: ((1, 1),(3, 1))
10: ((1, 1),(3, 1)) 110: ((0, 1),(3, 1),(3, 0))
10: ((2, 0),(3, 0)) 110: ((1, 1),(3, 1),(3, 0))
110: ((0, 1),(3, 1),(3, 0)) 120: ((0, 1),(3, 1),(3, 0))
110: ((1, 1),(3, 1),(3, 0)) 120: ((1, 1),(3, 1),(3, 0))
120: ((0, 1),(3, 1),(3, 0)) 120: ((3, 1),(3, 1),(3, 0))
120: ((1, 1),(3, 1),(3, 0)) 201: ((3, 1),(3, 0),(3, 1))
120: ((3, 1),(3, 1),(3, 0)) 1010: ((3, 1),(3, 0),(3, 1),(3, 0))
201: ((3, 1),(3, 0),(3, 1)) Requirements 0:
1010: ((3, 1),(3, 0),(3, 1),(3, 0)) 0: ((0, 1))
Requirements 0:
0: ((0, 1))
Requirements 1:
0: ((2, 0))
-------
40 = 14
Remove empty rows and columns, then Either avoid or contain frozenset({GriddedCayleyPerm(0, ((1, 1),))}) but only child and index 0 is non-empty, then Remove empty rows and columns
+---+---+---+---+ +---+---+---+ +---+---+---+ +---+---+
| 0 | 0 | # | 2 | = | 0 | 0 | 2 | = | 0 | # | 2 | = | 0 | 2 |
+---+---+---+---+ +---+---+---+ +---+---+---+ +---+---+
| # | # | # | 1 | | # | # | 1 | | # | # | 1 | | # | 1 |
+---+---+---+---+ +---+---+---+ +---+---+---+ +---+---+
Key: Key: Key: Key:
0: Av(01) 0: Av(01) 0: Av(01) 0: Av(01)
1: Av(01,10) 1: Av(01,10) 1: Av(01,10) 1: Av(01,10)
2: Av(120,201,1010) 2: Av(120,201,1010) 2: Av(120,201,1010) 2: Av(120,201,1010)
Crossing obstructions: Crossing obstructions: Crossing obstructions: Crossing obstructions:
00: ((0, 1),(1, 1)) 00: ((0, 1),(1, 1)) 10: ((0, 1),(2, 1)) 10: ((0, 1),(1, 1))
01: ((0, 1),(1, 1)) 01: ((0, 1),(1, 1)) 110: ((0, 1),(2, 1),(2, 0)) 110: ((0, 1),(1, 1),(1, 0))
10: ((0, 1),(1, 1)) 10: ((0, 1),(1, 1)) 120: ((0, 1),(2, 1),(2, 0)) 120: ((0, 1),(1, 1),(1, 0))
10: ((0, 1),(3, 1)) 10: ((0, 1),(2, 1)) 120: ((2, 1),(2, 1),(2, 0)) 120: ((1, 1),(1, 1),(1, 0))
10: ((1, 1),(3, 1)) 10: ((1, 1),(2, 1)) 201: ((2, 1),(2, 0),(2, 1)) 201: ((1, 1),(1, 0),(1, 1))
110: ((0, 1),(3, 1),(3, 0)) 110: ((0, 1),(2, 1),(2, 0)) 1010: ((2, 1),(2, 0),(2, 1),(2, 0)) 1010: ((1, 1),(1, 0),(1, 1),(1, 0))
110: ((1, 1),(3, 1),(3, 0)) 110: ((1, 1),(2, 1),(2, 0)) Requirements 0: Requirements 0:
120: ((0, 1),(3, 1),(3, 0)) 120: ((0, 1),(2, 1),(2, 0)) 0: ((0, 1)) 0: ((0, 1))
120: ((1, 1),(3, 1),(3, 0)) 120: ((1, 1),(2, 1),(2, 0))
120: ((3, 1),(3, 1),(3, 0)) 120: ((2, 1),(2, 1),(2, 0))
201: ((3, 1),(3, 0),(3, 1)) 201: ((2, 1),(2, 0),(2, 1))
1010: ((3, 1),(3, 0),(3, 1),(3, 0)) 1010: ((2, 1),(2, 0),(2, 1),(2, 0))
Requirements 0: Requirements 0:
0: ((0, 1)) 0: ((0, 1))
-------
41 = 21
Remove empty rows and columns
+---+---+---+---+ +---+
| # | # | # | # | = | ● |
+---+---+---+---+ +---+
| # | # | ● | # | Key:
+---+---+---+---+ Crossing obstructions:
Key: Requirements 0:
Crossing obstructions: 0: ((0, 0))
Requirements 0:
0: ((2, 0))
--------
42 -> ()
is empty
+---+---+---+---+
| ∅ | ∅ | ∅ | ∅ |
+---+---+---+---+
| ∅ | ∅ | ∅ | ∅ |
+---+---+---+---+
| ∅ | ∅ | ∅ | ∅ |
+---+---+---+---+
| ∅ | ∅ | ∅ | ∅ |
+---+---+---+---+
Key:
∅: Av(ε)
Crossing obstructions:
Requirements 0:
>>> spec.show()
[I 250411 11:35:00 specification_drawer:543] Opening specification in browser
[I 250411 11:35:04 specification_drawer:529] specification html file removed
Any method from ``CombinatorialSpecification`` can be used, but in particular the ``get_genf`` function finds the generating function and counts or the counts can be found using the specification as a recurrence up to length :math:`n` for any :math:`n`.
.. code-block:: python
>>> spec.get_genf()
[I 250411 11:36:55 specification:385] Computing initial conditions
[I 250411 11:36:55 specification:359] Computing initial conditions
[I 250411 11:36:55 specification:387] The system of 43 equations
root_func := F_0:
eqs := [
F_0 = F_1 + F_3,
F_1 = F_2,
F_2 = 1,
F_3 = F_4,
F_4 = F_20*F_5,
F_5 = F_6,
F_6 = F_14 + F_7,
F_7 = F_8,
F_8 = F_10 + F_9,
F_9 = F_2,
F_10 = F_11 + F_12 + F_13,
F_11 = 0,
F_12 = F_4,
F_13 = F_4,
F_14 = F_15 + F_28,
F_15 = F_16,
F_16 = F_17,
F_17 = F_18*F_20*F_22,
F_18 = F_19,
F_19 = F_1 + F_16,
F_20 = F_21,
F_21 = x,
F_22 = F_23,
F_23 = F_1 + F_24,
F_24 = F_25,
F_25 = F_26*F_27,
F_26 = F_21,
F_27 = F_23,
F_28 = F_29 + F_30 + F_38 + F_42,
F_29 = 0,
F_30 = F_31,
F_31 = F_32*F_36*F_37,
F_32 = F_33,
F_33 = F_34 + F_35,
F_34 = F_10,
F_35 = F_31,
F_36 = F_21,
F_37 = F_23,
F_38 = F_39,
F_39 = F_40*F_41,
F_40 = F_14,
F_41 = F_21,
F_42 = 0
]:
count := [1, 1, 3, 11, 41, 151, 553]:
[I 250411 11:36:55 specification:388] Solving...
[I 250411 11:36:58 specification:399] Checking initial conditions for: (2*x**3 - 4*x**2 + 4*x - 1)/(4*x**3 - 6*x**2 + 5*x - 1)
>>> n = 10
>>> print([spec.count_objects_of_size(i) for i in range(n)])
[1, 1, 3, 11, 41, 151, 553, 2023, 7401, 27079]
Owner
- Name: Abigail Ollson
- Login: Ollson2921
- Kind: user
- Repositories: 1
- Profile: https://github.com/Ollson2921
PhD maths student at Keele University
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Bean" given-names: "Christian" - family-names: "Ollson" given-names: "Abigail" title: "cperms_ins_enc" version: 1.0.0 date-released: 2025-04-11 url: "https://github.com/Ollson2921/cperms_ins_enc"
GitHub Events
Total
- Delete event: 1
- Push event: 15
- Pull request event: 1
- Pull request review event: 1
- Create event: 2
Last Year
- Delete event: 1
- Push event: 15
- Pull request event: 1
- Pull request review event: 1
- Create event: 2
Dependencies
setup.py
pypi
- comb_spec_searcher *