# The Point-Set and Block-Set of an Incidence Structure

## Introduction

An incidence structure created by Magma consists of three objects: the *point-set* $P$, the *block-set* $B$ and the incidence structure $D$ itself.

Although called the point-set and block-set, $P$ and $B$ are not actual Magma sets. They simply act as the parent structures for the points and blocks (respectively) of the incidence structure $D$, enabling easy creation of these objects via the `!` and `.` operators.

The point-set $P$ belongs to the Magma category `IncPtSet`, and the block-set $B$ to the category `IncBlkSet`.

In this section, the functions used to create point-sets, block-sets and the points and blocks themselves are described.

## Creating Point-Sets and Block-Sets

As mentioned above, the point-set and block-set are returned as the second and third arguments of any function which creates an incidence structure. They can also be created via the following two functions.

### `PointSet(D): Inc -> IncPtSet`

Given an incidence structure $D$, return the point-set $P$ of $D$.

### `BlockSet(D): Inc -> IncBlkSet`

Given an incidence structure $D$, return the block-set $B$ of $D$.

## Creating Points and Blocks

For efficiency and clarity, the points and blocks of an incidence structure are given special types in Magma. The category names for points and blocks are `IncPt` and `IncBlk`, respectively. They can be created in the following ways.

### `Point(D, i): Inc, RngIntElt -> IncPt`

The $i$-th point of the incidence structure $D$.

### `P . i: IncPtSet, RngIntElt -> IncPt`

Given the point-set $P$ of an incidence structure $D$ and an integer $i$, return the $i$-th point of $D$.

### `Representative(P): IncPtSet -> IncPt`

### `Rep(P): IncPtSet -> IncPt`

Given the point-set $P$ of an incidence structure $D$, return a representative point of $D$.

### `Random(P): IncPtSet -> IncPt`

Given the point-set $P$ of an incidence structure $D$, return a random point of $D$.

### `P ! x: IncPtSet, Elt -> Incpt`

Given the point-set $P$ of an incidence structure $D$, return the point of $D$ corresponding to the element $x$ of the indexed set used to create $D$.

### `Block(D, i): Inc, RngIntElt -> IncBlk`

The $i$-th block of the incidence structure $D$.

### `B . i: IncBlkSet, RngIntElt -> IncBlk`

Given the block-set $B$ of an incidence structure $D$ and an integer $i$, return the $i$-th block of $D$.

### `Representative(B): IncBlkSet -> IncBlk`

### `Rep(B): IncBlkSet -> IncBlk`

Given the block-set $B$ of an incidence structure $D$, return a representative block of $D$.

### `Random(B): IncBlkSet -> IncBlk`

Given the block-set $B$ of an incidence structure $D$, return a random block of $D$.

### `B ! S: IncBlkSet, SetEnum -> IncBlk`

Given the block-set $B$ of an incidence structure $D$, and a set $S$, tries to coerce $S$ into $B$.

### `Representative(b): IncBlk -> IncPt`

### `Rep(b): IncBlk -> IncPt`

Given a block $b$ of an incidence structure $D$, return a representative point of $D$ which is incident with $b$.

### `Random(b): IncBlk -> IncPt`

Given a block $b$ of an incidence structure $D$, return a random point incident with $b$.

### `Example: Points Blocks (ex-5190d2)`

The following example shows how points and blocks of an incidence structure can be created.

```magma
> V := {@ 2, 4, 6, 8, 10 @};
> D, P, B := IncidenceStructure< V | {2, 4, 6}, {2, 8, 10}, {4, 6, 8} >;
> D;
Incidence Structure on 5 points with 3 blocks
> P;
Point-set of Incidence Structure on 5 points with 3 blocks
> B;
Block-set of Incidence Structure on 5 points with 3 blocks
> B.2;
{2, 8, 10}
> P.4;
8
> P!4;
4
> P.5 eq Point(D, 5);
true
> b := Random(B);
> b;
{2, 4, 6}
> Parent(b);
Block-set of Incidence Structure on 5 points with 3 blocks
> p := Rep(b);
> p;
2
> Parent(p);
Point-set of Incidence Structure on 5 points with 3 blocks
> B!{2, 8, 10};
{2, 8, 10}

```
