# SSC2 (InstanceTopic, 3)

SSC2, standing for Standard Shape Construction version 2, is a notation for defining shapes. It is the successor to SSCN (also known as SSC1 or just SSC). SSC2 is the newest and preferred method for writing the definition of a shape.

## Scope

SSC2, unlike its predecessor, is concerned only with the structure of a shape, not its position, size, orientation, frame or indeed stretching of any particular hypercell. Because of this, SSC2 no longer includes the matrix transformation operation or any boolean operations.

## Fundamental sets

SSC2 has five articles called the fundamental sets. Each of these sets is infinite, but there are a finite number of shapes in each dimension in each set. Each set provides a method of enumeration which can later be used to enumerate any shape based on its SSC2 notation. Shapes are defined by referencing elements of the fundamental sets and combining them with various operators.

### Manifolds

Manifolds are written in the form Mx, where x is the index of the manifold. This set is chosen to be the first in the list of sets because of all the SSC2 fundamental sets, it is the only one which contains the point and the line as the first two elements.

### Regular polygons

Regular polygons are written in the form Gx, where x is the number of vertices in the polygon. G0, G1 and G2 are not valid.

### Regular polygon duals

Regular polygon duals are exactly the same as regular polygons except they are written as Hx rather than Gx. Functionally, they are mainly used as brick products, for example the diamond, H4, is the tegal product.

### Kanitopes

Kanitopes are written in one of two forms: Kfx for three- or four-dimensional shapes or Knfx for higher-dimensional shapes. Here, n is the shape's dimension, f is the family and x is the Dx number. Families are written with one letter, using t, o, i; p, e, k, s for Schlaefli symbols {3,3}, {3,4}, {3,5}; {3,3,3}, {3,3,4}, {3,4,3}, {3,3,5} respectively. For higher-dimensional shapes, the families are x for simplex and c for cross polytope or hypercube.

### Toratopes

Toratopes are written in the form Tx. Here, x can either be an integer, in which case the toratope is an x-dimensional hypersphere, or a string in rotopic group notation restricted to having no superscripts and an outer pair of parentheses (thus making the string always represent a toratope, not just a more general rotope).

## Bricks

A brick is a shape with brick symmetry, i.e. the existence of a point (a,b,c,...) implies point (±a,±b,±c,...) for all sign permutations.

The following statements make clear what shapes in the fundamental sets are considered bricks:

• All toratopes are bricks.
• Any regular polygon Gx, where x is even, is a brick.
• All kanitopes that can be represented outside of a simplex family and aren't snubs are bricks.
• The dual of a brick is a brick.
• The only manifolds that are bricks are trivial and already satisfy one of the above conditions; therefore, for the purposes of SSC2, manifolds are not considered bricks.
• The result of any brick product of any set of brick arguments is also a brick.

## Operations

There are only two operations in SSC2 outside of the fundamental sets, described below.

### Brick product

Firstly, any brick has an associated brick product. This is a generalization of and thus includes the three bracketopic products:

• The Cartesian or square product with function MAX is the brick square, or G4
• The tegal product with function SUM is the brick diamond, or H4
• The crindal product with function RSS is the brick circle, or T2.

Notice also that the powertope A^P can be represented more generally as a brick product P{A,A,...} where the number of A's is equal to the dimensionality of P.

For these reasons there are no operations representing any other products, nor is there a powertope operation. However, all of these have shortcuts - see later on in this page.

### Prismatoid product

This operation returns the convex hull of its arguments in parallel spaces.

## String notation

• Any shape in a fundamental set is written as already described.
• Precedence can be explicitly specified using square brackets (not parentheses or braces). Implicitly, all prefix operators have higher precedence than infix operators, but no other conventions are set; where ambiguous it simply remains ambiguous.
• The brick product is written P{A,A,A,...} where P is the operating shape and each A is an argument. The number of arguments must be equal to the bounding space of P.
• The prismatoid product is written as infix \$. It is important to note that A \$ B \$ C, [A \$ B] \$ C and A \$ [B \$ C] each represent completely different objects. The argument order also matters.

### Shortcuts

In addition to the notation described above, several more definitions are added. These are shortcuts rather than fundamental operations and should be considered as mere string replacements.

• Infix A x B, A o B and A v B represent the square, circle and diamond brick products respectively, otherwise written as G4{A,B}, T2{A,B} and H4{A,B}.
• Prefix +A can also be used as a secondary shortcut for A x M1 (i.e. prism, or the Cartesian product with a line).
• Prefix &A can be used as a shortcut for A \$ M0 (i.e. pyramid, or the prismatoid between A and a point). Notice that M0 \$ A \$ M0 is the same as A v M1 - both give bipyramids.
• Infix ^ (or superscript) can be used with a brick power to represent a powertope (i.e. A^P = P{A, A, A...} with n A's where P is n-dimensional) or inside a brick product with a natural power to represent repetition (i.e. A{B^n} = A{B, B, B, ...} with n B's). If it is used outside a brick product with a natural power, the product used is implicitly Cartesian.
• S and Rx can be used in the same sense as they are in SSCN.

### Summary of symbols used

Any italic symbols represent shortcuts rather than core notation.

Set starters
M, G, H, K, T
Brackets
[] precedence, {} brick products, () toratopes
Prefix operators
+ prism, & pyramid
Infix operators
\$ prismatoid, x square, o circle, v diamond, ^ power
Comma
, used in brick products
Store and recall
S, Rx

## Matrix notation

Although this may seem more complicated than the string notation, it is actually a lot simpler as an entire shape is represented with only numbers.

### General rules

• Shapes in fundamental sets have exactly 2 columns.
• Nothing has an odd number of columns.
• Anything with more than 2 columns is a compound (i.e. a brick product, prismatoid or combinations of these) and all compounds have more than 2 columns, with the exception of pyramids. A matrix with 2 columns is a pyramid if and only if the top row says {2 2} and should be treated as a compound.
• A compound is a brick product if there is a zero in the top left, otherwise it is a prismatoid.
• For fundamental sets, if the top row is empty (i.e. contains only zeroes), it's a toratope. If left column is empty, it's a manifold. Otherwise, it's a kanitope.
• Any zero rows at the bottom or zero columns on the right can be added or removed however necessary. These zero rows or columns are also called padding.
• Assuming there is no padding in a matrix, the height is the dimensionality of the matrix and the width is (loosely) the complexity.
• The order of an SSC2 matrix with at least 3 rows is <h-2,w/2>+2 where w and h are the width and height of the matrix, and <i,j> is the Pairing Function. The order of a matrix with less than 3 rows is equal to the number of rows.

### Trivial cases and members of fundamental sets

• The point is a 0x2 matrix.
• The digon is a 1x2 matrix. Its sole row is {1 1}.
• Uniform polytopes (the set of which includes kanitopes, regular polygons and regular polygon duals) are represented by an nx2 matrix as shown below:
```{{N1 0}
{N2 D1}
{N3 D2}
{.....}
{Nk Dj}
{Dx Dk}}
```
where k is the dimensionality of the shape minus one and j = k - 1. The N1..Nk values correspond to the numerators of the Schlaefli symbol for the polytope and the D1..Dk values correspond to the denominators. For convex figures Ni/Di will be an integer. For regular polygons, if D1 is 2 and N1 is even, this produces the dual polygon. In all other cases if any Ni/Di pair is not fully canceled the meaning is undefined. Finally, Dx is the Dx number of the polytope; for two-dimensional shapes Dx is always 1.
• Toratopes are represented by an nx2 matrix with at least the first row empty. The toratope is represented with each value in the left column being a number of adjacent I's and the corresponding value in the right column being the nesting level that those I's are on, and must be aligned bottommost in the nx2 matrix.
• Manifolds are represented with an empty left column and the right column containing a number k and the series of numbers M1..Mk, where 1 < k < n. k represents the length of the manifold string notation and each Mi is a number in that string. The special character S in the notation can be represented by any integer higher than the maximal possible legal value for Mi.

### Operations

#### Brick product

1. Remove any zero rows from the bottom of all arguments
2. Concatenate all arguments vertically
3. Concatenate horizontally the product on the left and the step 2 result on the right, padding the product matrix with zero-rows at the bottom if necessary.
4. Add a column on the left which has the height of each argument matrix in order, padded with zeroes at the end.
5. Add a column of zeroes on the left.

#### Prismatoid operation

1. Remove any zero columns from the right of all arguments
2. Concatenate all arguments horizontally
3. Add a row at the top which has the width of each argument matrix in order, padded with zeroes at the end.

### Examples

• In the matrix {{n 0} {1 d}} written as n/d each having order 2:
• 3/1 = triangle
• 4/1 = square
• 5/1 = pentagon
• 5/2 = pentagram
• 6/1 = hexagon
• 6/2 = dual triangle
• 8/2 = diamond
• Circle, order 2
```{{0  0}
{2  1}}
```
• Torus, order 3
```{{0  0}
{1  1}
{2  2}}
```
• Tetrahedron, order 3
```{{3 0}
{3 0}
{1 0}}
```
• Cone, order 3
```{{2 2}
{0 0}
{2 1}}
```
• Tesseract, order 5
```{{4 0}
{3 1}
{3 1}
{1 1}}
```
• Crind, order 6
```{{0 2 0 0 4 0}
{0 1 2 1 1 1}
{0 0 0 0 1 1}}
```