sig
  type symetries = Snone | Srotations | Sall
  type multiplicity = Minf | Mone | Mmaybe
  type t = private {
    name : string option;
    pattern : Tiling.Pattern.t;
    multiplicity : Tiling.Tile.multiplicity;
    symetries : Tiling.Tile.symetries;
    isos : D4.subgroup;
  }
  val create :
    ?name:string ->
    ?s:Tiling.Tile.symetries ->
    ?m:Tiling.Tile.multiplicity -> Tiling.Pattern.t -> Tiling.Tile.t
  val apply : D4.t -> Tiling.Tile.t -> Tiling.Tile.t
  val print : Format.formatter -> Tiling.Tile.t -> unit
end