# Catagolue naming conventions

Catagolue has been designed to be compatible with future expansion. In particular, it is very permissive to allow the following:

- Custom rules;
- Custom symmetries;
- Custom objects.

To avoid breaking Catagolue, there are a number of conventions about how to name rules, symmetries, and objects.

## Contents

## Census names

The name of a census is of one of the following forms:

`[rule]/[symmetry]`for a main census;`[rule]/[symmetry]-[date]`for a frozen backup of a main census.

The rule and symmetry should satisfy the conventions below, lest the census is potentially subject to automatic deletion. Likewise, for backup censuses, the date should be of the form yyyy-mm-dd.

## Rule names

A Catagolue rule string must satisfy the regular expression `[a-z][a-zA-Z0-9_-]+`. The first letter describes the rule family, for example:

**b**: a 2-state Moore-neighbourhood outer-totalistic or isotropic rule;**r**: an extended-range rule (such as Larger than Life);**g**: a multi-state Generations rule;**x**: a custom rule.

The custom rule syntax allows results from arbitrary rules (from Golly, or other software) to be exchanged without infringing on existing rules. For instance, the rule `xLangtons-Loops` in Catagolue will map to the rule 'Langtons-Loops' in Golly. This should be used for rules that do not fit into any of the other rule families.

For rules which fit into one of the rule families, the name of the rule should be canonical so as to avoid census fragmentation.

## Symmetries

A Catagolue symmetry must satisfy the regular expression `([A-Z][a-zA-Z0-9_]*~)?[a-zA-Z0-9+_]+`. If a tilde is present in the symmetry, everything to its left denotes the *topology* of the universe (for unbounded Euclidean universes, omit this). The rest of the symmetry string specifies how to create the initial seed in the universe; for instance, 'C1' specifies a 16-by-16 seed derived in a standard way from a SHA-256 hash.

It is encouraged to use symmetries beginning with your initials and ending in 'Test' when experimenting with new symmetries.

The 20 official symmetries, for which Catagolue knows how to generate the RLE of the initial seed, are tabulated below:

- C1, 8x32, 4x64, 2x128, 1x256: asymmetric soups of various sizes
- C2_1, C2_2, C2_4: 180° (two-fold) rotational symmetry
- C4_1, C4_4: 90° (four-fold) rotational symmetry
- D2_+1, D2_+2: reflectional symmetry along an orthogonal line
- D2_x: reflectional symmetry along a diagonal line
- D4_+1, D4_+2, D4_+4: reflectional symmetry along two perpendicular orthogonal lines
- D4_x1, D4_x4: reflectional symmetry along two perpendicular diagonal lines
- D8_1, D8_4: reflectional symmetry along four orthogonal/diagonal through a common center

If a topology is specified, it will be appended to the rule with a delimiting colon, with any 'x' replaced by a comma, any 'f' replaced by an asterisk, and any 'p' replaced by a plus sign. This allows Catagolue to generate RLEs compatible with the bounded grid support in Golly.

## Objects

An object must satisfy one of the following regular expressions:

`zz_[A-Z]+`for unclassifiable infinite-growth patterns;`PATHOLOGICAL`for unclassifiable objects which do not appear to grow infinitely;`me[a-z]*_[0-9]+(h|k)`for long-lived soups;`[a-y][a-y][0-9]*(_[a-z0-9]+)+`for everything else.

If an object begins with the letter 'x', it is assumed to be an apgcode giving an exact canonical form of the pattern. An object beginning with 'y' is a classifiable infinite-growth pattern, and an object beginning with 'ov' is oversized (too large to admit a Catagolue-friendly apgcode).