[Next] [Prev] [Right] [Left] [Up] [Index] [Root]
Construction of Incidence Structures and Designs

Construction of Incidence Structures and Designs

IncidenceStructure< v | X > : RngIntElt, List -> Inc
IncidenceStructure< P | X > : SetIndx, List -> Inc
Construct the incidence structure D having point set P = {@ p_1, p_2, ..., p_v @} (where p_i = i for each i if the first form of the constructor is used), and block set B = { B_1, B_2, ..., B_b } given by X. The value of X must be either: The incidence structure D produced by this constructor will have P as its point set and B as its set of blocks. The function returns three values:
NearLinearSpace< v | X : parameters > : RngIntElt, List -> IncNsp
NearLinearSpace< P | X : parameters > : SetIndx, List -> IncNsp
    Check: BoolElt                      Default: true
Construct the near-linear space S on the set of points P = {@ p_1, p_2, ..., p_v @} (where p_i = i for each i if the first form of the constructor is used), with lines L = { L_1, L_2, ..., L_b } given by X. The value of X must be either: The set of lines L defined by X must satisfy two properties: The optional boolean argument Check indicates whether or not to check that these two properties are satisfied.

The near-linear space S produced by this constructor will have P as its point set and L as its set of lines. The function returns three values:

LinearSpace< v | X : parameters > : RngIntElt, List -> IncLsp
LinearSpace< P | X : parameters > : SetIndx, List -> IncLsp
    Check: BoolElt                      Default: true
Construct the linear space S on the set of points P = {@ p_1, p_2, ..., p_v @} (where p_i = i for each i if the first form of the constructor is used), with lines L = { L_1, L_2, ..., L_b } given by X. The value of X must be either:

The set of lines L defined by X must satisfy two properties: The optional boolean argument Check indicates whether or not to check that these two properties are satisfied.

The linear space S produced by this constructor will have P as its point set and L as its set of lines. The function returns three values:

Design< t, v | X : parameters > : RngIntElt, RngIntElt, List -> Dsgn
Design< t, P | X : parameters > : RngIntElt, SetIndx, List -> Dsgn
    Check: BoolElt                      Default: true
Construct the t-design D on the set of points P = {@ p_1, p_2, ..., p_v @} (where p_i = i for each i if the first form of the constructor is used), with blocks B = { B_1, B_2, ..., B_b } given by X. The value of X must be either: The set of blocks B defined by X must satisfy three properties: The optional boolean argument Check indicates whether or not to check that these three properties are satisfied.

The t-(v, k, lambda) design D produced by this constructor will have P as its point set and B as its set of blocks. The function returns three values:


Example Design_Constructors (H56E1)

The Fano plane, considered as a 2-(7, 3, 1) design, may be constructed by the following statement:

> F := Design< 2, 7 | {1,2,3}, {1,4,5}, {1,6,7}, {2,4,7},
>                                {2,5,6}, {3,5,7}, {3,4,6} >;
> F: Maximal;
2-(7, 3, 1) Design with 7 blocks
Points: {@ 1, 2, 3, 4, 5, 6, 7 @}
Blocks:
    {1, 2, 3},
    {1, 4, 5},
    {1, 6, 7},
    {2, 4, 7},
    {2, 5, 6},
    {3, 5, 7},
    {3, 4, 6}
General incidence structures are allowed repeated blocks, as in the following:

> S := IncidenceStructure< {@ 4, 5, 7, 9 @} | [{4, 5, 7}, {7, 9},
>                                              {5, 7, 9} , {7, 9}] >;
> S: Maximal;
Incidence Structure on 4 points with 4 blocks
Points: {@ 4, 5, 7, 9 @}
Blocks:
    {4, 5, 7},
    {7, 9},
    {5, 7, 9},
    {7, 9}
We now construct a linear space by giving its incidence matrix:

> R := RMatrixSpace(Integers(), 5, 6);
> I := R![ 1, 0, 1, 1, 0, 0,
>          1, 0, 0, 0, 1, 1,
>          1, 1, 0, 0, 0, 0,
>          0, 1, 1, 0, 1, 0,
>          0, 1, 0, 1, 0, 1];
> L := LinearSpace< 5 | I >;
> L: Maximal;
Linear Space on 5 points with 6 lines
Points: {@ 1, 2, 3, 4, 5 @}
Lines:
    {1, 2, 3},
    {3, 4, 5},
    {1, 4},
    {1, 5},
    {2, 4},
    {2, 5}
Finally, we use the minimum weight codewords of the unextended binary Golay code to construct a 4-(23, 7, 1) design. Since we know that this is indeed a 4-design, we set the checking parameter to false.

> C := GolayCode(GF(2), false);
> C;
[23, 12, 7] Unextended Golay Code over GF(2)
Generator matrix:
[1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 1]
[0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 1]
[0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 1]
[0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 1]
[0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 1 0 0]
[0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 1 0]
[0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 1]
[0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 1 1 0 0]
[0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 1 1 0]
[0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 1 1]
[0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0]
[0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 1 1]
> minwt := MinimumWeight(C);
> minwt;
7
> wds := Words(C, minwt);
> D := Design< 4, Length(C) | wds : Check := false >;
> D;
4-(23, 7, 1) Design with 253 blocks

[Next] [Prev] [Right] [Left] [Up] [Index] [Root]