# Elementary Properties of Incidence Structures and Designs

**Testing the** $t$**-balance: A general Note on Parameter** `Al`

A parameter `Al` is provided to allow users to specify the algorithm to be used for balance testing. The default value is `"NoOrbits"`, which applies a “brute force” test. One alternative is `"Orbits"`, which uses the orbits of $t$-sets under the automorphism group of the incidence structure under consideration. This is much faster than `"NoOrbits"` for some cases, but slower for others.

The other alternative for checking if an object is $t$-balanced is `"FastBalanceTest"`: It is also a “brute force” test but whose implementation allows for a dramatic improvement in efficiency, especially for larger $t$ ($t \geq 4$). This implementation has a drawback however as it may necessitate more memory space than is available, thus resulting in an out-of-memory error. It is for this reason that `"FastBalanceTest"` is not the default setting for `Al`, but as a general rule we strongly recommend its usage as we surmise that execution should successfully complete in most cases.

## `IsSimple(D): Inc -> BoolElt`

Returns `true` if and only if the incidence structure $D$ has no repeated blocks.

## `IsTrivial(D): Inc -> BoolElt`

Returns `true` if and only if the incidence structure $D$ is a trivial incidence structure.

## `IsSelfDual(D): Inc -> BoolElt`

Returns `true` if and only if the incidence structure $D$ is self-dual, that is, if $D$ is isomorphic to its dual.

## `IsUniform(D): Inc -> BoolElt, RngIntElt`

Returns `true` if and only if the incidence structure $D$ is uniform; that is, each block contains the same number of points. If `true`, also returns the blocksize.

## `IsNearLinearSpace(D): Inc -> BoolElt`

Returns `true` if and only if the incidence structure $D$ is a near–linear space.

## `IsLinearSpace(D): Inc -> BoolElt`

Returns `true` if and only if the incidence structure $D$ is a linear space.

## `IsDesign(D, t: parameters): Inc, RngIntElt -> BoolElt, RngIntElt`

```magma
Al: MonStgElt                    Default: "NoOrbits"
```

Returns `true` if and only if the incidence structure $D$ is a $t$–design. If `true`, then the number of blocks of $D$ containing a general $t$-set is also returned. The optional parameter `Al` can be used to specify the algorithm used for balance testing, see the introduction to Section [Elementary Properties of Incidence Structures and Designs](#design-sec-prop) for a full description of its usage.

## `IsBalanced(D, t: parameters): Inc, RngIntElt -> BoolElt, RngIntElt`

```magma
Al: MonStgElt                    Default: "NoOrbits"
```

Returns `true` if and only if the incidence structure $D$ is balanced (with respect to $t$). If `true`, then the number of blocks of $D$ containing a general $t$-set is also returned. The optional parameter `Al` can be used to specify the algorithm used for balance testing, see the introduction to Section [Elementary Properties of Incidence Structures and Designs](#design-sec-prop) for a full description of its usage.

## `IsComplete(D): Inc -> BoolElt`

Return `true` if and only if $D$ is the complete design.

## `IsSymmetric(D): Dsgn -> BoolElt`

Return `true` if and only if the design $D$ is symmetric.

## `IsSteiner(D, t): Dsgn, RngIntElt -> BoolElt`

```magma
Al: MonStg                    Default: "NoOrbits"
```

Return `true` if and only if the design $D$ is a Steiner $t$–design. The optional parameter `Al` can be used to specify the algorithm used for balance testing, see the introduction to Section [Elementary Properties of Incidence Structures and Designs](#design-sec-prop) for a full description of its usage.

## `IsPointRegular(D): IncNsp -> BoolElt, RngIntElt`

Return `true` if and only if the (near–)linear space $D$ is point regular. If `true`, the point regularity is also returned.

## `IsLineRegular(D): IncNsp -> BoolElt, RngIntElt`

Return `true` if and only if the (near–)linear space $D$ is line regular. If `true`, the line regularity is also returned.
