<html><head><title>[SONATA] 11 Designs</title></head>
<body text="#000000" bgcolor="#ffffff">
[<a href = "chapters.htm">Up</a>] [<a href ="CHAP010.htm">Previous</a>] [<a href = "theindex.htm">Index</a>]
<h1>11 Designs</h1><p>
<P>
<H3>Sections</H3>
<oL>
<li> <A HREF="CHAP011.htm#SECT001">Constructing a design</a>
<li> <A HREF="CHAP011.htm#SECT002">Properties of a design</a>
<li> <A HREF="CHAP011.htm#SECT003">Working with the points and blocks of a design</a>
</ol><p>
<p>
Although the functions described in this section were initially meant to
investigate designs generated from nearrings, they can also be applied to
other incidence structures. In principal a design is represented as a set
of points and a set of blocks, a subset of the powerset of the points, with
containment as incidence relation.
<p>
<p>
<h2><a name="SECT001">11.1 Constructing a design</a></h2>
<p><p>
<a name = "SSEC001.1"></a>
<li><code>DesignFromPointsAndBlocks( </code><var>points</var><code>, </code><var>blocks</var><code> )</code>
<p>
<code>DesignFromPointsAndBlocks</code> returns the design with the set of points
<var>points</var> and the set of blocks <var>blocks</var>, a subset of the powerset of
<var>points</var>.
<p>
<pre>
gap> points := [1..7];;
gap> blocks := [[1,2,3],[1,4,5],[1,6,7],[2,4,7],[2,5,6],[3,5,7],
> [3,4,6]];;
gap> D := DesignFromPointsAndBlocks( points, blocks );
<an incidence structure with 7 points and 7 blocks>
</pre>
<p>
<a name = "SSEC001.2"></a>
<li><code>DesignFromIncidenceMat( M ) ;</code>
<p>
<code>DesignFromIncidenceMat</code> returns the design with incidence matrix <var>M</var>,
The rows of <var>M</var> are labelled by the set of points 1 to <i>v</i>, the
columns represent the blocks.
If the ( <i>i</i>, <i>j</i> ) entry of the matrix <var>M</var> is 1, then the point <i>i</i> is
incident with the <i>j</i>-th block, i.e. the <i>j</i>-th block consists of those
points <i>i</i> for which the entry ( <i>i</i>, <i>j</i> ) of <var>M</var> is 1. All other entries
have to be 0.
<p>
<pre>
gap> M := [[1,0,1,1],
> [1,1,0,0],
> [1,1,1,0]];;
gap> DesignFromIncidenceMat( M );
<an incidence structure with 3 points and 4 blocks>
</pre>
<p>
<a name = "SSEC001.3"></a>
<li><code>DesignFromPlanarNearRing( </code><var>N</var><code>, </code><var>type</var><code> )</code>
<p>
<code>DesignFromPlanarNearRing</code> returns a design obtained from the planar
nearring <var>N</var> following the constructions of James R. Clay
<a href="biblio.htm#Clay:Nearrings"><[>Clay:Nearrings</cite></a>].
<p>
If <var>type</var> = <code>"*"</code>, <code>DesignFromPlanarNearRing</code> returns the design
(<i>N</i> ,<i>B</i><sup>*</sup>, ∈ ) in the notation of J. R. Clay with the elements of <var>N</var> as
set of points and {<i>N</i><sup>*</sup>·<i>a</i>+<i>b</i> | <i>a</i>,<i>b</i> ∈ <i>N</i>, <i>a</i> ≠ 0 } as set of blocks.
Here <i>N</i><sup>*</sup> is the set of elements <i>x</i> ∈ <i>N</i> satisfying <i>x</i>·<i>N</i> = <i>N</i>.
<p>
If <var>type</var> = <code>" "</code> (blank), <code>DesignFromPlanarNearRing</code> returns the design
(<i>N</i> ,<i>B</i>, ∈ ) in the notation of J. R. Clay with the elements of <var>N</var> as
set of points and {<i>N</i>·<i>a</i>+<i>b</i> | <i>a</i>,<i>b</i> ∈ <i>N</i>, <i>a</i> ≠ 0 } as set of
blocks.
<p>
<pre>
gap> n := LibraryNearRing( GTW9_2, 90 );
LibraryNearRing(9/2, 90)
gap> IsPlanarNearRing( n );
true
gap> D1 := DesignFromPlanarNearRing( n, "*" );
<a 2 - ( 9, 4, 3 ) nearring generated design>
gap> D2 := DesignFromPlanarNearRing( n, " " );
<a 2 - ( 9, 5, 5 ) nearring generated design>
</pre>
<p>
<a name = "SSEC001.4"></a>
<li><code>DesignFromFerreroPair( </code><var>G</var><code>, </code><var>phi</var><code>, </code><var>type</var><code> )</code>
<p>
<code>DesignFromFerreroPair</code> returns a design obtained from the group <var>G</var>, and
a group of fixed-point-free automorphisms <var>phi</var> acting on <var>G</var> following the
constructions of James R. Clay <a href="biblio.htm#Clay:Nearrings"><[>Clay:Nearrings</cite></a>].
<p>
If <var>type</var> = <code>"*"</code>, <code>DesignFromFerreroPair</code> returns the design
(<i>G</i> ,<i>B</i><sup>*</sup>, ∈ ) in the notation of J. R. Clay with the elements of <var>G</var> as
set of points and the nonzero orbits of <var>G</var> under <var>phi</var> and their
translates by group-elements as set of blocks.
<p>
If <var>type</var> = <code>" "</code> (blank), <code>DesignFromFerreroPair</code> returns the design
(<i>G</i> ,<i>B</i>, ∈ ) in the notation of J. R. Clay with the elements of <var>G</var> as
set of points and the nonzero orbits of <var>G</var> under <var>phi</var> joined with the zero
of <var>G</var> and their translates by group-elements as set of blocks.
<p>
<pre>
gap> aux := FpfAutomorphismGroupsCyclic( [3,3], 4 );
[ [ [ f1, f2 ] -> [ f1*f2, f1*f2^2 ] ],
<pc group of size 9 with 2 generators> ]
gap> f := aux[1][1];
[ f1, f2 ] -> [ f1*f2, f1*f2^2 ]
gap> phi := Group( f );
<group with 1 generator>
gap> G := aux[2];
<pc group of size 9 with 2 generators>
gap> D3 := DesignFromFerreroPair( G, phi, "*" );
<a 2 - ( 9, 4, 3 ) nearring generated design>
gap> # D3 is actually isomorphic to D1
</pre>
<p>
<a name = "SSEC001.5"></a>
<li><code>DesignFromWdNearRing( </code><var>N</var><code> )</code>
<p>
<code>DesignFromWdNearring</code> returns a design obtained from the weakly divisible
nearring <var>N</var> with cyclic additive group of prime power order. Following the
constructions of A. Benini, F. Morini and S. Pellegrini, we take the elements
of <var>N</var> as set of points and {<i>N</i>·<i>a</i>+<i>b</i> | <i>a</i> ∈ <i>C</i>, <i>b</i> ∈ <i>N</i> } as set of
blocks. Here <i>C</i> is the set of elements <i>a</i> ∈ <i>N</i> such that <i>a</i>·<i>N</i> = <i>N</i>.
<p>
<pre>
gap> n := LibraryNearRing( GTW9_1, 202 );
LibraryNearRing(9/1, 202)
gap> IsWdNearRing( n );
true
gap> DesignFromWdNearRing( n );
<a 1 - ( 9, 5, 10 ) nearring generated design>
</pre>
<p>
<p>
<h2><a name="SECT002">11.2 Properties of a design</a></h2>
<p><p>
<a name = "SSEC002.1"></a>
<li><code>PointsOfDesign( </code><var>D</var><code> )</code>
<p>
<code>PointsOfDesign</code> returns the actual list of points of the design <var>D</var>, not
their positions, no matter how the points of the design <var>D</var> may be
represented. To get the representation of those points, whose positions in
the list of all points are given by the list <var>pointnrs</var>, one can use
<code>PointsOfDesign( </code><var>D</var><code> ){</code><var>pointnrs</var><code>}</code>.
<p>
<pre>
gap> D1;
<a 2 - ( 9, 4, 3 ) nearring generated design>
gap> PointsOfDesign( D1 );
[ (()), ((4,5,6)), ((4,6,5)), ((1,2,3)), ((1,2,3)(4,5,6)),
((1,2,3)(4,6,5)), ((1,3,2)), ((1,3,2)(4,5,6)), ((1,3,2)(4,6,5)) ]
gap> PointsOfDesign( D1 ){[2,4]};
[ ((4,5,6)), ((1,2,3)) ]
gap> # returns the points in position 2 and 4
</pre>
<p>
<a name = "SSEC002.2"></a>
<li><code>BlocksOfDesign( </code><var>D</var><code> )</code>
<p>
<code>BlocksOfDesign</code> returns the actual list of blocks of the design <var>D</var>, not
their positions. Blocks are represented as lists of points. A point is
incident with a block if the point is an element of the
block. To get the representation of those blocks, whose positions in
the list of all blocks are given by the list <var>blocknrs</var>, one can use
<code>BlocksOfDesign( </code><var>D</var><code> ){</code><var>blocknrs</var><code>}</code>.
<p>
<pre>
gap> Length( BlocksOfDesign( D1 ) );
18
gap> BlocksOfDesign( D1 ){[3]};
[ [ ((4,6,5)), (()), ((1,2,3)(4,5,6)), ((1,3,2)(4,5,6)) ] ]
gap> # returns the block in position 3 as a list of points
</pre>
<p>
<a name = "SSEC002.3"></a>
<li><code>DesignParameter( </code><var>D</var><code> )</code>
<p>
<code>DesignParameter</code> returns the set of paramaters <i>t</i>, <i>v</i>, <i>b</i>, <i>r</i>, <i>k</i>, λ
of the design <var>D</var>. Here <i>v</i> is the size of the set of points
<code>PointsOfDesign</code>, <i>b</i> is the size of the set of blocks <code>PointsOfDesign</code>,
every point is incident with precisely <i>r</i> blocks, every block is incident
with precisely <i>k</i> points, every <i>t</i> distinct points are together incident
with precisely λ blocks.
<p>
<pre>
gap> DesignParameter( D1 );
[ 2, 9, 18, 8, 4, 3 ]
gap> # t = 2, v = 9, b = 18, r = 8, k = 4, lambda = 3
</pre>
<p>
<a name = "SSEC002.4"></a>
<li><code>IncidenceMat( </code><var>D</var><code> )</code>
<p>
<code>IncidenceMat</code> returns the incidence matrix of the design <var>D</var>, where the
rows are labelled by the positions of the points in <code>PointsOfDesign</code>, the
columns are labelled by the positions of the blocks in <code>BlocksOfDesign</code>.
If the point in position <i>i</i> is incident with the block in position <i>j</i>, then
the ( <i>i</i>, <i>j</i> ) entry of the matrix <code>IncidenceMat</code> is 1, else it is 0.
<p>
<pre>
gap> M1 := IncidenceMat( D1 );
[ [ 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1 ],
[ 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1 ],
[ 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0 ],
[ 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1 ],
[ 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1 ],
[ 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0 ],
[ 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 ],
[ 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0 ],
[ 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 ] ]
</pre>
<p>
<a name = "SSEC002.5"></a>
<li><code>PrintIncidenceMat( </code><var>D</var><code> )</code>
<p>
<code>PrintIncidenceMat</code> prints only the entries of the incidence matrix
<code>IncidenceMat</code> of the design without commas. If the point in position <i>i</i> is
incident with the block in position <i>j</i>, then there is 1 in the <i>i</i>-th
row, <i>j</i>-th column, else there is '.', a dot.
<p>
<pre>
gap> PrintIncidenceMat( D1 );
..1.1.1..1.11..1.1
1...1..11..1.11..1
1.1....1.11..1.11.
1..1.1..1.1.1..1.1
.11..11...1..11..1
.1.11.1.1....1.11.
1..1.11..1.1..1.1.
.11..1.11..11...1.
.1.11..1.11.1.1...
</pre>
<p>
<a name = "SSEC002.6"></a>
<li><code>BlockIntersectionNumbers( </code><var>D</var><code> )</code>
<a name = "SSEC002.6"></a>
<li><code>BlockIntersectionNumbersK( </code><var>D</var><code>, </code><var>blocknr</var><code> )</code>
<p>
In the first form <code>BlockIntersectionNumbers</code> returns the list of
cardinalities of the intersection of each block with all other blocks of the
design <var>D</var>.
In the second form <code>BlockIntersectionNumbers</code> returns the list of
cardinalities of the intersection of the block in position <var>blocknr</var> with
all other blocks of the design <var>D</var>.
<p>
<pre>
gap> BlockIntersectionNumbers( D1, 2 );
[ 0, 4, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 1, 2, 1 ]
gap> # the second has empty intersection with the first block
gap> # and intersects all others in at most 2 points
</pre>
<p>
<a name = "SSEC002.7"></a>
<li><code>IsCircularDesign( </code><var>D</var><code> )</code>
<p>
<code>IsCircularDesign</code> returns <code>true</code> if the design <var>D</var> is circular and <code>false</code>
otherwise. The design <var>D</var> has to be the result of <code>DesignFromPlanarNearRing</code>
or <code>DesignFromFerreroPair</code>, since <code>IsCircularDesign</code> assumes the particular
structure of such a nearring-generated design.
<p>
A design <var>D</var> is <strong>circular</strong> if every two distinct blocks intersect in at most
two points.
<p>
<code>IsCircularDesign</code> calls the function <code>BlockIntersectionNumbers</code>.
<p>
<pre>
gap> IsCircularDesign( D1 );
true
</pre>
<p>
<p>
<h2><a name="SECT003">11.3 Working with the points and blocks of a design</a></h2>
<p><p>
<a name = "SSEC003.1"></a>
<li><code>IsPointIncidentBlock( </code><var>D</var><code>, </code><var>pointnr</var><code>, </code><var>blocknr</var><code> )</code>
<p>
<code>IsPointIncidentBlock</code> returns <code>true</code> if the point whose position in the list
<code>PointsOfDesign( </code><var>D</var><code> )</code> is given by <var>pointnr</var> is incident with the block
whose position in the list <code>BlocksOfDesign( </code><var>D</var><code> )</code> is given by <var>blocknr</var>,
that is, the point is contained in the block as an element in a set.
<p>
<pre>
gap> IsPointIncidentBlock( D1, 3, 1 );
true
gap> # point 3 is incident with block 1
gap> IsPointIncidentBlock( D1, 3, 2 );
false
</pre>
<p>
<a name = "SSEC003.2"></a>
<li><code>PointsIncidentBlocks( </code><var>D</var><code>, </code><var>blocknrs</var><code> )</code>
<p>
<code>PointsIncidentBlocks</code> returns a list of positions of those points of the
design <var>D</var> which are incident with the blocks, whose positions are given in
the list <var>blocknrs</var>.
<p>
<pre>
gap> PointsIncidentBlocks( D1, [1, 4] );
[ 4, 7 ]
gap> # block 1 and block 4 are together incident with
gap> # points 4 and 7
</pre>
<p>
<a name = "SSEC003.3"></a>
<li><code>BlocksIncidentPoints( </code><var>D</var><code>, </code><var>pointnrs</var><code> )</code>
<p>
<code>BlocksIncidentPoints</code> returns a list of positions of the blocks of the
design <var>D</var> which are incident with those points, whose positions are given
in the list <var>pointnrs</var>.
<p>
<pre>
gap> BlocksIncidentPoints( D1, [2, 7] );
[ 1, 12, 15 ]
gap> # point 2 and point 7 are together incident with
gap> # blocks 1, 12, 15
gap> BlocksOfDesign( D1 ){last};
[ [ ((4,5,6)), ((4,6,5)), ((1,2,3)), ((1,3,2)) ],
[ ((1,3,2)), ((1,3,2)(4,5,6)), (()), ((4,5,6)) ],
[ ((1,3,2)(4,6,5)), ((1,3,2)), ((4,5,6)), ((1,2,3)(4,5,6)) ] ]
gap> # the actual point sets of blocks 1, 12, and 15
gap> BlocksIncidentPoints( D1, [2, 3, 7] );
[ 1 ]
gap> # points 2, 3, 7 are together incident with block 1
gap> PointsIncidentBlocks( D1, [1] );
[ 2, 3, 4, 7 ]
gap> # block 1 is incident with points 2, 3, 4, 7
</pre>
<p>
<p>
[<a href = "chapters.htm">Up</a>] [<a href ="CHAP010.htm">Previous</a>] [<a href = "theindex.htm">Index</a>]
<P>
<address>SONATA manual<br>September 2025
</address></body></html>
Messung V0.5
¤ Dauer der Verarbeitung: 0.27 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.