Tiles for tilings #
This file defines some basic concepts related to individual tiles for tilings in a discrete context (with definitions in a continuous context to be developed separately but analogously).
Work in the field of tilings does not generally try to define or state things in any kind of maximal generality, so it is necessary to adapt definitions and statements from the literature to produce something that seems appropriately general for mathlib, covering a wide range of tiling-related concepts found in the literature. Nevertheless, further generalization may prove of use as this work is extended in future.
We work in the context of a space X acted on by a group G; the action is not required to be
faithful, although typically it is. In a discrete context, tiles are expected to cover the space, or
a subset of it being tiled when working with tilings not of the whole space, and the tiles are
pairwise disjoint. In a continuous context, definitions in the literature vary; the tiles may be
closed and cover the space with interiors required to be disjoint (as used by Grünbaum and Shephard
or Goodman-Strauss), or they may be required to be measurable and to partition it up to null sets
(as used by Greenfeld and Tao).
In general we are concerned not with a tiling in isolation but with tilings by some protoset of tiles; thus we make definitions in the context of such a protoset, where copies of the tiles in the tiling must be images of those tiles under the action of an element of the given group.
Where there are matching rules that say what combinations of tiles are considered as valid, these
are provided as separate hypotheses where required. Tiles in a protoset are commonly considered in
the literature to be marked in some way. When this is simply to distinguish two otherwise identical
tiles, this is represented by the use of different indices in the protoset. When this is to give a
tile fewer symmetries than it would otherwise have under the action of the given group, this is
represented by the symmetries specified in the Prototile being less than its full stabilizer.
The group G is throughout here a multiplicative group. Additive groups are also used in the
literature, typically when based on ℤ; to support the use of additive groups, to_additive could
be used with the theory here.
Main definitions #
Prototile G X: A prototile inXas acted on byG, carrying the information of a subgroup of the stabilizer that says when two copies of the prototile are considered the same.Protoset G X ιₚ: An indexed family of prototiles.PlacedTile ps: An image of a tile in the protosetps.
References #
A Prototile G X describes a tile in X, copies of which under elements of G may be used in
tilings. Two copies related by an element of symmetries are considered the same; two copies not so
related, even if they have the same points, are considered distinct.
- carrier : Set X
The points in the prototile. Use the coercion to
Set X, or∈on thePrototile, rather than usingcarrierdirectly. The coercion cannot useSetLikebecause it does not satisfycoe_injective. - symmetries : Subgroup ↥(MulAction.stabilizer G ↑self)
The group elements considered to be symmetries of the prototile.
Instances For
Equations
Equations
- DiscreteTiling.Prototile.instMembership = { mem := fun (p : DiscreteTiling.Prototile G X) (x : X) => x ∈ ↑p }
A Protoset G X ιₚ is an indexed family of Prototile G X. This is a separate definition
rather than just using plain functions to facilitate defining associated API that can be used with
dot notation.
- tiles : ιₚ → Prototile G X
The tiles in the protoset. Use the coercion to a function rather than using
tilesdirectly.
Instances For
A PlacedTile ps is an image of a tile in the protoset p under an element of the group G.
This is represented using a quotient so that images under group elements differing only by a
symmetry of the tile are equal.
- index : ιₚ
The index of the tile in the protoset.
- groupElts : G ⧸ Subgroup.map (MulAction.stabilizer G ↑(↑ps self.index)).subtype (↑ps self.index).symmetries
The group elements under which this tile is an image.
Instances For
An induction principle to deduce results for PlacedTile from those given an index and an
element of G, used with induction pt using PlacedTile.induction_on.
An alternative extensionality principle for PlacedTile that avoids HEq, using existence of a
common group element.
An alternative extensionality principle for PlacedTile that avoids HEq, using equality of
quotient preimages.
Coercion from a PlacedTile to a set of points. Use the coercion rather than using coeSet
directly.
Equations
- ↑pt = Quotient.liftOn' pt.groupElts (fun (g : G) => g • ↑(↑ps pt.index)) ⋯
Instances For
Equations
Equations
- DiscreteTiling.PlacedTile.instMembership = { mem := fun (p : DiscreteTiling.PlacedTile ps) (x : X) => x ∈ ↑p }
Equations
- One or more equations did not get rendered due to their size.
Equations
- DiscreteTiling.PlacedTile.instMulAction = { toSMul := inferInstance, mul_smul := ⋯, one_smul := ⋯ }