Fixed polycubes
DefinitionLattice cells#✓fully proved
For a natural number \(d\), a lattice cell in dimension \(d\) is a point of \(\mathbb{Z}^d\), that is, a function assigning an integer to each of the \(d\) coordinate axes.
def latticeCell (d : ℕ) : Type := Fin d → ℤ
Sources
- Sebastian Luther and Stephan Mertens, The Perimeter of Proper Polycubes, Journal of Integer Sequences 20 (2017), Article 17.9.5, https://cs.uwaterloo.ca/journals/JIS/VOL20/Mertens/mert4.tex: a
d-dimensional polycube is a set of face-connected cells inℤ^d, lines 115–117 (also arXiv:1705.03688v1).
DefinitionFace adjacency of lattice cells#✓fully proved
Two lattice cells \(x, y \in \mathbb{Z}^d\) are face adjacent when there is an axis \(k\) such that \(x_j = y_j\) for every axis \(j \ne k\) and \(|x_k - y_k| = 1\).
def faceAdjacent (d : ℕ) (x y : latticeCell d) : Prop :=
∃ k : Fin d, (∀ j : Fin d, j ≠ k → x j = y j) ∧ (y k = x k + 1 ∨ x k = y k + 1)
def latticeCell (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/Enumerative/LunnonDimensionDecomposition.lean:33
Sources
- Luther–Mertens, JIS 20 (2017), Article 17.9.5, lines 277–279: this is the "neighbors in the polycube" relation underlying the adjacency graph, in which two vertices are connected if the corresponding cells are neighbors.
Uses 1 · Used by 2
DefinitionPolycube#✓fully proved
A finite set \(S\) of lattice cells in \(\mathbb{Z}^d\) is a polycube when it is nonempty and any two cells \(x, y \in S\) are joined by a finite sequence of cells of \(S\), starting at \(x\) and ending at \(y\), in which consecutive cells are face adjacent.
def isPolycubeCells (d : ℕ) (S : Finset (latticeCell d)) : Prop :=
S.Nonempty ∧ ∀ x ∈ S, ∀ y ∈ S,
Relation.ReflTransGen
(fun a b : latticeCell d => faceAdjacent d a b ∧ a ∈ S ∧ b ∈ S) x y
def latticeCell (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/Enumerative/LunnonDimensionDecomposition.lean:33
def faceAdjacent (d : ℕ) (x y : latticeCell d) : Prop :=
∃ k : Fin d, (∀ j : Fin d, j ≠ k → x j = y j) ∧ (y k = x k + 1 ∨ x k = y k + 1)
MathlibExt/Combinatorics/Enumerative/LunnonDimensionDecomposition.lean:41
Sources
- Luther–Mertens, JIS 20 (2017), Article 17.9.5, lines 115–117: a
d-dimensional polycube is a set of face-connected cells inℤ^d. Connectivity is expressed by reflexive transitive closure of face adjacency restricted to the setS.
Uses 2 · Used by 3
DefinitionCanonical position of a cell set#✓fully proved
A finite set \(S\) of lattice cells in \(\mathbb{Z}^d\) is in canonical position when, for every axis \(k\), every cell \(x \in S\) has \(x_k \ge 0\) and some cell \(x \in S\) has \(x_k = 0\); that is, the minimum of each coordinate over \(S\) is \(0\).
def isCanonicalCells (d : ℕ) (S : Finset (latticeCell d)) : Prop :=
∀ k : Fin d, (∃ x ∈ S, x k = 0) ∧ ∀ x ∈ S, 0 ≤ x k
def latticeCell (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/Enumerative/LunnonDimensionDecomposition.lean:33
Sources
- Luther–Mertens, JIS 20 (2017), Article 17.9.5, lines 115–117: fixed polycubes are identified up to translation. Each class has a unique representative with minima at zero. Only translations are quotiented, so rotations and reflections stay distinct orientations.
Uses 1 · Used by 3
DefinitionProper dimension#✓fully proved
The proper dimension of a finite set \(S\) of lattice cells in \(\mathbb{Z}^d\) is the number of axes \(k\) on which \(S\) varies, that is, for which there are cells \(x, y \in S\) with \(x_k \ne y_k\).
noncomputable def properDimension (d : ℕ) (S : Finset (latticeCell d)) : ℕ :=
Nat.card { k : Fin d // ∃ x ∈ S, ∃ y ∈ S, x k ≠ y k }
def latticeCell (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/Enumerative/LunnonDimensionDecomposition.lean:33
Sources
- Luther–Mertens, JIS 20 (2017), Article 17.9.5, lines 160–162: a polycube spanning
idimensions is proper inidimensions. Asinowski–Barequet–Barequet–Rote, Proper n-Cell Polycubes in n−3 Dimensions, Journal of Integer Sequences 15 (2012), Article 12.8.4, lines 171–172: proper dimension is the dimension of the convex hull of cell centers, which for axis-aligned cells equals the count of varying axes.
Uses 1 · Used by 2
DefinitionFixed polycubes#✓fully proved
For natural numbers \(d\) and \(n\), the fixed \(n\)-cell polycubes in dimension \(d\) are represented by the finite sets \(S\) of lattice cells in \(\mathbb{Z}^d\) that are polycubes (nonempty and connected through face adjacency), have exactly \(n\) cells, and are in canonical position (the minimum of each coordinate over \(S\) is \(0\)).
def fixedPolycube (d n : ℕ) : Type :=
{ S : Finset (latticeCell d) // isPolycubeCells d S ∧ S.card = n ∧ isCanonicalCells d S }
def latticeCell (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/Enumerative/LunnonDimensionDecomposition.lean:33
def isPolycubeCells (d : ℕ) (S : Finset (latticeCell d)) : Prop :=
S.Nonempty ∧ ∀ x ∈ S, ∀ y ∈ S,
Relation.ReflTransGen
(fun a b : latticeCell d => faceAdjacent d a b ∧ a ∈ S ∧ b ∈ S) x y
MathlibExt/Combinatorics/Enumerative/LunnonDimensionDecomposition.lean:50
def isCanonicalCells (d : ℕ) (S : Finset (latticeCell d)) : Prop :=
∀ k : Fin d, (∃ x ∈ S, x k = 0) ∧ ∀ x ∈ S, 0 ≤ x k
MathlibExt/Combinatorics/Enumerative/LunnonDimensionDecomposition.lean:62
Uses 3 · Used by 3
DefinitionNumber of fixed polycubes#✓fully proved
For natural numbers \(d\) and \(n\), \(A_d(n)\) is the number of fixed \(n\)-cell polycubes in dimension \(d\), that is, the number of \(n\)-cell polycubes in \(\mathbb{Z}^d\) that are in canonical position.
noncomputable def fixedPolycubeCount (d n : ℕ) : ℕ :=
Nat.card (fixedPolycube d n)
def fixedPolycube (d n : ℕ) : Type :=
{ S : Finset (latticeCell d) // isPolycubeCells d S ∧ S.card = n ∧ isCanonicalCells d S }
MathlibExt/Combinatorics/Enumerative/LunnonDimensionDecomposition.lean:79
Uses 1 · Used by 1
DefinitionProper fixed polycubes#✓fully proved
For natural numbers \(n\) and \(i\), the fixed \(n\)-cell polycubes proper in dimension \(i\) are the fixed \(n\)-cell polycubes in dimension \(i\) whose proper dimension is \(i\), that is, which vary along each of the \(i\) axes.
def properFixedPolycube (n i : ℕ) : Type :=
{ P : fixedPolycube i n // properDimension i P.val = i }
def fixedPolycube (d n : ℕ) : Type :=
{ S : Finset (latticeCell d) // isPolycubeCells d S ∧ S.card = n ∧ isCanonicalCells d S }
MathlibExt/Combinatorics/Enumerative/LunnonDimensionDecomposition.lean:79
noncomputable def properDimension (d : ℕ) (S : Finset (latticeCell d)) : ℕ :=
Nat.card { k : Fin d // ∃ x ∈ S, ∃ y ∈ S, x k ≠ y k }
MathlibExt/Combinatorics/Enumerative/LunnonDimensionDecomposition.lean:74
Uses 5 · Used by 2
DefinitionNumber of proper fixed polycubes#✓fully proved
For natural numbers \(n\) and \(i\), \(\mathrm{DX}(n,i)\) is the number of fixed \(n\)-cell polycubes proper in dimension \(i\), that is, of fixed \(n\)-cell polycubes in dimension \(i\) whose proper dimension is \(i\).
noncomputable def properFixedPolycubeCount (n i : ℕ) : ℕ :=
Nat.card (properFixedPolycube n i)
def properFixedPolycube (n i : ℕ) : Type :=
{ P : fixedPolycube i n // properDimension i P.val = i }
MathlibExt/Combinatorics/Enumerative/LunnonDimensionDecomposition.lean:89
Sources
- Asinowski et al., JIS 15 (2012), Article 12.8.4, line 978, state \(\mathrm{DX}(n,0) = 0\) for \(n > 1\).
Uses 1 · Used by 1
TheoremLunnon's dimension decomposition for fixed polycubes#✓fully proved
Let \(d\) and \(n\) be natural numbers with \(n > 1\), let \(A_d(n)\) be the number of fixed \(n\)-cell polycubes in dimension \(d\), and for each \(i\) let \(\mathrm{DX}(n,i)\) be the number of fixed \(n\)-cell polycubes proper in dimension \(i\). Then
The hypothesis \(n > 1\) is needed: the printed formula omits its domain and fails at \(n = 1\), where the single cell is a polycube proper in dimension \(0\) and so is counted only by the \(i = 0\) term, which the sum excludes. For \(n > 1\) that term vanishes, since \(\mathrm{DX}(n,0) = 0\).
theorem lunnon_fixed_polycube_dimension_decomposition
(d n : ℕ) (hn : 1 < n) :
fixedPolycubeCount d n =
Finset.sum (Finset.Ico 1 n) (fun i => Nat.choose d i * properFixedPolycubeCount n i)
noncomputable def fixedPolycubeCount (d n : ℕ) : ℕ :=
Nat.card (fixedPolycube d n)
MathlibExt/Combinatorics/Enumerative/LunnonDimensionDecomposition.lean:84
noncomputable def properFixedPolycubeCount (n i : ℕ) : ℕ :=
Nat.card (properFixedPolycube n i)
MathlibExt/Combinatorics/Enumerative/LunnonDimensionDecomposition.lean:95
Sources
- Sebastian Luther and Stephan Mertens, The Perimeter of Proper Polycubes, Journal of Integer Sequences 20 (2017), Article 17.9.5, https://cs.uwaterloo.ca/journals/JIS/VOL20/Mertens/mert4.tex: Lunnon's classical formula
eq:lunnon-a, lines 172–175, with sumi = 1, …, n-1and factorC(d,i);DXnotation and the at-most-n-1dimensions bound, lines 163–166. Original: W. F. Lunnon, Counting multidimensional polyominoes, Comput. J. 18 (1975), 366–367.DX(n,0) = 0forn > 1from Asinowski–Barequet–Barequet–Rote, JIS 15 (2012), Article 12.8.4, line 978, https://cs.uwaterloo.ca/journals/JIS/VOL15/Barequet/barequet2.tex.
Uses 9
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.