Describing polyhedral tilings and higher dimensional polytopes by sequence of their two-dimensional components

Polyhedral tilings are often used to represent structures such as atoms in materials, grains in crystals, foams, galaxies in the universe, etc. In the previous paper, we have developed a theory to convert a way of how polyhedra are arranged to form a polyhedral tiling into a codeword (series of numbers) from which the original structure can be recovered. The previous theory is based on the idea of forming a polyhedral tiling by gluing together polyhedra face to face. In this paper, we show that the codeword contains redundant digits not needed for recovering the original structure, and develop a theory to reduce the redundancy. For this purpose, instead of polyhedra, we regard two-dimensional regions shared by faces of adjacent polyhedra as building blocks of a polyhedral tiling. Using the present method, the same information is represented by a shorter codeword whose length is reduced by up to the half of the original one. Shorter codewords are easier to handle for both humans and computers, and thus more useful to describe polyhedral tilings. By generalizing the idea of assembling two-dimensional components to higher dimensional polytopes, we develop a unified theory to represent polyhedral tilings and polytopes of different dimensions in the same light.

. A polychoron associated with a disordered structure is simple, and a simple polychoron is composed of simple polyhedra. We explain how to generate the 3 -codeword of a simple polyhedron 12 . Note that a simple polychoron is the one whose 0-faces are all degree four; the 0-face is a point on the polychoron, where the vertices of polyhedra meet; the degree of a 0-face is the number of peaks incident to the 0-face. A simple polyhedron is the one whose vertices are all degree three; the degree of a vertex is the number of edges incident to the vertex. 3 represents a polyhedron, and consists of 2 and . We first describe how to generate 2 . 2 is denoted as Here, 2 ( ) is the number of sides on the polygon , and is the number of polygons on the polyhedron. Generating 2 reduces to assigning IDs to polygons. To visually distinguish already-encoded polygons from to-be-encoded ones, we assume that all polygons are coloured at first, and make each polygon transparent when encoded. In encoding, we call a side of a transparent polygon glued to a coloured one a dangling side.
To identify each side, we call the side of the polygon the side . The side-ID represents an integer: = + ∑ 2 ( ) −1 =1 . We abbreviate the smallest-ID dangling side as the s-side. The 2 -codeword is generated as follows: 1.
(a) Choose a polygon and a side of that polygon as the initial polygon and side, respectively.
(b) The initial polygon is the polygon 1.
(a) The next polygon (2 ≤ ≤ ) is the coloured one glued to the s-side.
(b) Assign IDs ( 1 , 2 , 3 , ⋯ , 2 ( ) ) to the sides of the polygon from the one glued to the s-side in a CW direction.
(a) Repeat the procedure 2 until all polygons get transparent.
We assign edge IDs as follows. Given that two sides contribute to an edge, we first tentatively assign the smaller side ID to the edge, and then relabel the IDs so that the edge is the one with the th smallest tentative ID.
To explain , we first introduce the zeroth tentative side-pairing codeword ( (0) ). For this purpose, we define a plot as follows. A plot consists of a single dangling side or a chain of dangling sides. Here, two dangling sides are considered to be chained when they contribute to the same vertex contributed by two transparent polygons. Let x be the smallest side ID of a plot. We define the ID of that plot as x. We call the smallest-ID plot the s-plot. Let 3 ( ) be the partially transparent polyhedron obtained when the polygon gets transparent. On 3 ( ), the polygon is glued to the s-plot of 3 ( − 1). If the polygon is glued to plots other than the s-plot, we call them additional plots (a-plots).
Suppose that a plot is an a-plot and that the side (of the a-plot ) is glued to the side (of the polygon ). We call such a pair of sides a side-a-pair . By collecting the side-a-pairs, (0) is denoted as Here, ( ) > ( ) and ( ) < ( + 1). side−a−pair is the number of side-a-pairs.
By a side-a-pair ( ) ( ), we mean that the sides ( ) and ( ) should be glued together.
Using the decoding algorithm explained in the main text, the original polyhedron is recovered from 2 ; (0) . However, (0) is redundant. We reduce the redundancy in (0) step-by-step. To examine � side−a−pair � � side−a−pair � for necessity, we consider the first test codeword denoted as which is obtained by stripping � side−a−pair � � side−a−pair � off from (0) . Then we attempt to decode 2 ; (1) . If the original polyhedron is successfully reproduced, then we say the side-a-pair � side−a−pair � � side−a−pair � to be curable. Otherwise, we call the side-a-pair the non-curable side-a-pair (side-na-pair). If the side-a-pair is curable, then we can remove � side−a−pair � � side−a−pair � from (0) . We therefore set the first tentative side-pairing codeword as (1) = (1) . On the other hand, if the side-a-pair is non-curable, then (1) = (0) .
2. How to generate = ; . The 4 -codeword is a generalization of 3 , and consists of 3 and 12 . We first describe how to generate 3 . 3 is denoted as Here, 3 ( ) is the 3 -codeword of the polyhedron , and is the number of polyhedra on the polychoron. Generating 3 reduces to assigning polyhedron IDs. We assume that all polyhedra are coloured at first, and make each polyhedron transparent when encoded.
In encoding, we call a face of a transparent polyhedron glued to a coloured one a dangling face. To identify each face (edge), we call the face (edge ) of the polygon the face (edge ). The face-ID (edge-ID ) represents an integer: = + ∑ ( ) ). Here, ( ) ( ( ) ) is the number of faces (edges) on the polyhedron . We abbreviate the smallest-ID dangling face as the s-face. The 3codeword is generated as follows: 1.
(a) Choose a polyhedron, a face of that polyhedron, and an edge of that face as the initial polyhedron, face and edge, respectively (b) The polyhedron 1 is the initial polyhedron.
(c) Determine 3 (1) by encoding the polyhedron 1 in such a way that the face 1 1 (edge 1 1 ) becomes the initial face (edge). (d) Make the polyhedron 1 transparent.

2.
(a) The next polyhedron (2 ≤ ≤ ) is the coloured one glued to the s-face. (a) Repeat the procedure 2 until all polyhedra get transparent.
We assign peak (ridge) IDs as follows. Given that three edges (two faces) contribute to a peak (ridge), we first tentatively assign the smallest edge (face) ID to the peak (ridge), and then relabel the IDs so that the peak (ridge) is the one with the th smallest tentative ID.
To define zeroth tentative face-pairing codeword ( (0) ), we explain plots for polychora. If a pair of two dangling faces contribute to a peak contributed by two transparent polyhedra, the dangling faces are considered to be chained. Chained dangling faces form a plot. A single dangling face also forms a plot. The plot here is a twodimensional object. We assign plot IDs so that the smallest-ID face of the plot x is the face x. The polyhedron in 4 ( ) is glued to the s-plot of 4 ( − 1). If the polyhedron is glued to plots other than the s-plot, they are called a-plots. Here, 4 ( ) is the partially transparent polychoron obtained when the polyhedron gets transparent. By the face-a-pair , we mean that the face (of the polyhedron ) is glued to the face of the a-plot in such a way that the edge contributed by the side (of the polygon ) is glued to the smallest-ID edge of the face . By collecting the face-a-pairs, is denoted as Here, ( ) > ( ) and ( ) < ( + 1). face−a−pair is the number of face-apairs.
By a similar argument for , the redundancy in (0) can be removed step-by-

Code for n-polytopes.
We have formulated the 3 -code for polyhedra, and then generalized it to the 4 -code for polychora in the previous paper 12 . Its summary has been given above and in the main text. The 3 -code ( 4 -code) consists of (1) an encoding algorithm for converting a polyhedron (polychoron) into 3 = 2 ; ( 4 = 3 ; ), (2) an algorithm for assigning IDs to the parts of that polyhedron (polychoron), and (3) a decoding algorithm for recovering the original polyhedron (polychoron) from 3 ( 4 ). Note that a polyhedron (polychoron) is a 3-polytope (4-polytope). Now we will recursively generalize the 3 -code and the 4 -code to the -code and show that anpolytope can be represented by a -codeword, which is denoted by Here, −1 is the ( − 1)-polytope-sequence codeword, and −2 is the bpanelpairing codeword. Note that, for = 3 and 4, the −2 -codewords are 1 = and 2 = , respectively. To formulate , we generalize terms used for 3 and 4 . As we regard that a polyhedron is a tiling by polygons, we regard an -polytope as a tiling by ( − 1)polytopes of the surface of an -dimensional object that is topologically the same as an ( − 1)-sphere. We call the building-block ( − 1)-polytopes blocks. Note that, for = 3, blocks for a polyhedron are polygons. Hereafter, we assume 0 ≤ ≤ − 2. As we distinguish the vertices and edges of a polyhedron from the corners and sides of a polygon, respectively, we distinguish -faces of an -polytope from those of a block.
We therefore call -faces of a block -bfaces. We give specific names to the parts that play a key role in formulating the -code. We call the ( − 2)-face of an -polytope a panel and the ( − 3)-face a joint. Similarly, we call the ( − 2)-bface of a block a bpanel and the ( − 3)-bface a bjoint. Note that, for = 3, a panel and a joint of a polyhedron are an edge and a vertex, respectively. A bpanel and a bjoint of a polygon are a side and a corner, respectively. We assume that the blocks are glued together such that each bpanel of each block meets exactly one other block along a panel of the -polytope.
Since we consider simple polytopes, every joint is contributed by three blocks.
We also introduce subblocks. As an -polytope is a tiling by blocks, each block is a tiling by ( − 2)-polytopes. We call the building-block ( − 2)-polytopes subblocks.
Hereafter, we assume 1 ≤ ≤ − 3 , and call -faces of a subblock -sfaces. In particular, we call the ( − 3)-sface a sjoint. The relations between parts of anpolytope, a block, and a subblock are summarized in Supplementary Table S1. The subblocks are glued together such that each sjoint of each subblock meets exactly one other subblock along a bjoint of the block. A bpanel of a block is a subblock. But when we call a subblock, we regard it as a building block of a block. For example, we say that each -sface of a subblock contributes to an -bface of a bpanel.
Using the terms introduced above, −1 is denoted as Here, −1 ( ) is the −1 -codeword of the block . block is the number of blocks forming the -polytope.

Generating
−1 reduces to assigning IDs to blocks. All blocks are coloured at first, and we make each block transparent when encoded. In encoding, we call a bpanel of a transparent block glued to a coloured one a dangling bpanel. To identify eachbface, we assign an ID to it. By the -bface , we mean the -bface of the block . Let −bface ( ) be the number of -bfaces on the block . The -bface-ID represents an integer: . We abbreviate the smallest-ID dangling bpanel as the s-bpanel. We recursively define the -sbface of a bpanel as follows: (1) for = − 3, the -sbface is the smallest-ID -bface of that bpanel and (2) for < − 3, the -sbface is the smallest-ID -bface of the ( + 1)-sbface.
Using the −1 -code, we can convert a block into −1 and assign IDs tobfaces of that block. The −1 -codeword of an -polytope is generated using the −1 -code as follows: 1.
(b) Determine −1 (1) by encoding the block 1 using the −1 -code in such a way that the bpanel 1 1 is the initial bpanel and each initial -bface becomes the -bface 1 1 . (c) Make the block 1 transparent.

2.
(a) The next block (2 ≤ ≤ block ) is the coloured one glued to the s-bpanel. (b) Determine −1 ( ) by encoding the block in such a way that the bpanel 1 is glued to the s-bpanel and each -bface 1 is glued to the -sbface of the s-bpanel.
(a) Repeat the procedure 2 until all blocks get transparent.
We can assign an ID to each -face of the -polytope as follows. Given that ( − ) -bfaces contribute to an -face, we first tentatively assign the smallestbface ID to the -face, and then relabel the IDs so that the -face is the one with the th smallest tentative ID.
To formulate −2 of , we first define the zeroth tentative bpanel-pairing codeword ( −2 (0) ). For this purpose, we explain plots for an -polytope. If a pair of two dangling bpanels contribute to a joint contributed by two transparent blocks, the dangling bpanels are considered to be chained. Chained dangling bpanels form a plot. A single dangling bpanel forms a plot as well. The plot here is an ( − 2)-dimensional object. We assign plot IDs so that the smallest-ID bpanel of the plot x is the bpanel x. The block of ( ) is glued to the s-plot of ( − 1) . Here, ( ) is the partially transparent -polytope obtained when the block gets transparent. If the block is glued to plots other than the s-plot, they are called a-plots. By the bpanel-a-pair −3 −4 ⋯ 2 1 , we mean that the bpanel (of the block ) is glued to the bpanel (of the a-plot of ( − 1)) in such a way that each -bface (of the bpanel ) contributed by the -sface (of the subblock ) is glued to the smallest-IDbface of the bpanel . By collecting the bpanel-a-pairs, (0) , we introduce some definitions. In decoding, if a bpanel of a block of the partial -polytope is not glued to the other bpanel, we call it a dangling bpanel. We also call the smallest-ID dangling bpanel the s-bpanel. We regard that a bundle of -bfaces meeting along an -dimensional region forms an -face of the partial -polytope. An isolated -bface also forms an -face. In a partial -polytope, if the pair of dangling bpanels contribute to a joint that is also contributed by three blocks, we call that joint an illegal joint (i-joint). When an i-joint is generated, we rectify it by gluing together the two dangling bpanels contributing to it.
(b) Glue the bpanel 1 to the s-bpanel of the partial -polytope in such a way that each -bface 1 is glued to the -sbface of the s-bpanel. (c) If ( ) �1 ≤ ≤ bpanel−a−pair � is the bpanel ID of the block , then glue the bpanel ( ) to the bpanel ( ) of the partial -polytope in such a way that each -bface (of the bpanel ( )) contributed by the -sface ( ) (of the subblock ( )) is glued to the smallest-ID -bface of the bpanel ( ). Using the 4 ( ) -code, a polychoron is represented by 4 ( ) = ; . Now we will recursively generalize the 4 ( ) -code to the ( 2 ) -code and show that an -polytope can be represented by a ( 2 ) -codeword, which is denoted as Here, 2 is the 2-face-sequence codeword, which is denoted as  1. We have translated ( ) into global side ID, and obtained ( ).

We have put together
3. We have put together * and into * ; . 4. We have translated * ; into part ID, and then removed the separator ";". As a result, we have obtained of 4 ( ) .
Similarly, we construct of ( 2 ) as follows: 1. We translate ( ) of +2 ( ) into global -face ID (1 ≤ ≤ ), and obtain ( ). Note that the [〈 , 1〉] and [〈 , 〉] ( ≠ 1) are separately defined. This is because we will remove the subscript " " and superscript "( 2 )" from ( 2 ) to construct later. Before decoding , we do not know the dimension of a polytope. The dimension is determined as a result of decoding. In decoding, when 〈 − 1,1〉 is completed and all the 2-faces are not placed, we know that the dimension of the polytope is or more.
In particular, the set of parts of an -polytope is defined as to determine from ( 2 ) , we step-by-step determine −1 s of blocks. To determine −1 ( ) ( −1 of the block ), we step-by-step deduce −2 � � ( −2 of the subblock of the block ). To deduce −2 � � , we examine whether the bpanel should be glued to an existing bpanel of the partialpolytope or create a new panel.
For 2 ≤ , −1 of the block can be determined from ( 2 ) and the partial Here, subblock ( ) is the number of subblocks on the block . Our first task is to deduce −2 ( 1 ). For this purpose, we construct a partial -polytope ( − 1) by decoding . Since the bpanel 1 (the bpanel 1 of the block ) is glued to the s-bpanel of ( − 1), the bpanel 1 should be the mirror image of that s-bpanel. Note that, when formulating the 4 ( ) -code, there was no need to care about the mirror-image relation, for the mirror image of a -gon is a -gon. To determine −2 ( 1 ), we encode the mirror image of the s-bpanel using the −2 -code. Now we need to carefully choose each initial -face for encoding, so that the bpanel 1 is glued to the s-bpanel in such a way that each -bface 1 of the bpanel 1 is glued to the -sbface of the s-bpanel. To meet this requirement, −2 ( 1 ) is determined as follows: 1. To properly choose initial faces, mark each -sbface of the s-bpanel. 2. Construct the mirror image of the marked s-bpanel.
3. Encode the mirror-image ( − 2)-polytope by choosing the marked -faces as the initial ones.
4. The −2 -codeword thus obtained is −2 ( 1 ). 5. We denote the relation between −2 ( 1 ) and the s-bpanel as To deduce −2 � �, we examine whether the bpanel should be glued to an existing bpanel of ( − 1) or create a new panel. For this purpose, we construct the partial -polytope −1 � −1 �& ( − 1) as follows. We first construct the partial block −1 � −1 �, which is obtained by decoding −2 ( 1 ) −2 ( 2 ) −2 ( 3 ) ⋯ −2 � −1 �; using the −1 -code. We then glue the bpanel 1 (of −1 � −1 �) to the s-bpanel of ( − 1) in such a way that each -bface 1 is glued to the -sbface of the s-bpanel. Next we examine . If there is such that the part ( ) is a bpanel of −1 � −1 � and the part ( + − 2) is a bpanel of ( − 1), then the part ( ) is a w-bpanel and the part ( + − 2) is a v-bpanel. Therefore, we glue the w-bpanel and the v-bpanel together in such a way that eachbface of the w-bpanel contributed by the part ( + ) is glued to the smallest-IDbface of the v-bpanel. When i-joints are generated, we rectify them until no i-joints remain. The partial -polytope thus obtained is −1 � −1 �& ( − 1). To examine whether the bpanel should be glued to an existing bpanel of ( − 1) or create a new panel, we first examine whether the bpanel is a w-bpanel that should be glued to an existing v-bpanel or not. The bpanel-na-pairs are recorded in using part IDs. The part ID of the bpanel , or subblock , is the number of parts of −1 � −1 �& ( − 1) plus one. If there is such that the ( ) is the part ID of the bpanel and the part ( + − 2) is a bpanel of ( − 1), then the bpanel is a w-bpanel and the part ( + − 2) is a v-bpanel. Therefore, the bpanel should be glued to the v-bpanel in such a way that each -bface contributed by the part ( + ) (of the subblock ) is glued to the smallest-ID -bface of the v-bpanel. To meet this requirement, the bpanel should be the mirror image of the v-bpanel and −2 � � is determined by encoding the mirror image as follows: 1. Inscribe a number " ( + )" onto the smallest-ID -bface of the v-bpanel. 2. Construct the mirror image of the inscribed v-bpanel.
3. Encode the mirror-image ( − 2)-polytope so that the part IDs of the inscribed -sfaces agree with the inscribed numbers. 4. The −2 -codeword thus obtained is −2 � �. 5. We denote the relation between −2 � � and the v-bpanel as Even if the bpanel is not a w-bpanel, there remains a possibility that it is glued to an existing bpanel. Specifically, when the bpanel contributes to an i-joint, it will be glued to an existing bpanel to rectify the i-joint. To examine this possibility, we introduce some terms. In −1 � −1 �, a sjoint of a subblock that is not glued to the other subblock is called a dangling sjoint. We also call the smallest-ID dangling sjoint s-sjoint. We refer to the joint contributed by the s-sjoint as the key joint (k-joint), for it plays a key role in determining whether the bpanel should be glued to an existing bpanel or create a new panel. We write k−joint � −1 � for the global joint ID of the k-joint. There exists one dangling bpanel contributing to the k-joint, which we call a candidate bpanel (c-bpanel). We write c−bpanel � −1 � for the global bpanel ID of the c-bpanel. The bpanel will be glued to the bpanel c−bpanel � −1 � or create a new panel. Now, we need to consider two cases: (Case 1) The k-joint of −1 � −1 �& ( − 1) is contributed by three blocks ( −1 � −1 � and two from ( − 1) ). In this case, in constructing −1 � �& ( − 1), when the joint k−joint � −1 � is contributed by three blocks and the bpanel is not glued to the bpanel c−bpanel � −1 �, the joint will be illegal. To rectify it, the bpanels and c−bpanel � −1 � should be glued together. Therefore, the bpanel should be the mirror image of the c-bpanel, and −2 � � is determined by encoding the mirror image of the c-bpanel. Now we need to carefully choose each initial -face for encoding so that the sjoint 1 of the subblock should be glued to the ssjoint. To properly choose each initial -face, we hereafter assume 1 ≤ ≤ − 4, and recursively define the -ssface of a sjoint as follows: (1) for = 2. Determine the next −1 ( ) = −2 ( ); −3 ( ) (2 ≤ i) as follows: (a) −2 ( 1 ) = ℳ[s − bpanel].
(II) Otherwise, we examine the k-joint, and then additional two cases arise: (i) If the k-joint is contributed by three blocks, then −2 � � = ℳ[c − panel].