Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 91213ddcfbe7f54821d42c2d9e091326 > files > 2786

gap-system-packages-4.4.12-5mdv2010.0.i586.rpm

<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 = "SECT001"></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&gt; points := [1..7];;
    gap&gt; blocks := [[1,2,3],[1,4,5],[1,6,7],[2,4,7],[2,5,6],[3,5,7],       
    &gt;                                                          [3,4,6]];;  
    gap&gt; D := DesignFromPointsAndBlocks( points, blocks );                 
    &lt;an incidence structure with 7 points and 7 blocks&gt;
</pre>
<p>
<a name = "SECT001"></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 <var>1</var> to <var>v</var>, the
columns represent the blocks.
If the <var>( i, j )</var> entry of the matrix <var>M</var> is <var>1</var>, then the point <var>i</var> is 
incident with the <var>j</var>-th block, i.e. the <var>j</var>-th block consists of those
points <var>i</var> for which the entry <var>( i, j )</var> of <var>M</var> is <var>1</var>. All other entries 
have to be <var>0</var>.
<p>
<pre>
    gap&gt; M := [[1,0,1,1],
    &gt;          [1,1,0,0],
    &gt;          [1,1,1,0]];;
    gap&gt; DesignFromIncidenceMat( M ); 
    &lt;an incidence structure with 3 points and 4 blocks&gt;
</pre>
<p>
<a name = "SECT001"></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
citeClay:Nearrings.
<p>
If <var>type</var> = <code>"*"</code>, <code>DesignFromPlanarNearRing</code> returns the design 
<var>(<var>N</var>,B<sup>*</sup>,in)</var> in the notation of J. R. Clay with the elements of <var>N</var> as 
set of points and <var>{N<sup>*</sup>cdota+b | a,binN, a not= 0 }</var> as set of blocks.
Here <var>N<sup>*</sup></var> is the set of elements <var>xinN</var> satisfying <var>xcdotN = N</var>.
<p>
If <var>type</var> = <code>" "</code> (blank), <code>DesignFromPlanarNearRing</code> returns the design 
<var>(<var>N</var>,B,in)</var> in the notation of J. R. Clay with the elements of <var>N</var> as 
set of points and <var>{Ncdota+b | a,binN, a not= 0 }</var> as set of 
blocks.
<p>
<pre>
    gap&gt; n := LibraryNearRing( GTW9_2, 90 );
    LibraryNearRing(9/2, 90)
    gap&gt; IsPlanarNearRing( n );
    true
    gap&gt; D1 := DesignFromPlanarNearRing( n, "*" );
    &lt;a 2 - ( 9, 4, 3 ) nearring generated design&gt;
    gap&gt; D2 := DesignFromPlanarNearRing( n, " " );
    &lt;a 2 - ( 9, 5, 5 ) nearring generated design&gt;
</pre>
<p>
<a name = "SECT001"></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 citeClay:Nearrings.
<p>
If <var>type</var> = <code>"*"</code>, <code>DesignFromFerreroPair</code> returns the design 
<var>(<var>G</var>,B<sup>*</sup>,in)</var> 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 
<var>(<var>G</var>,B,in)</var> 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&gt; aux := FpfAutomorphismGroupsCyclic( [3,3], 4 );
    [ [ [ f1, f2 ] -&gt; [ f1*f2, f1*f2^2 ] ], 
      &lt;pc group of size 9 with 2 generators&gt; ]
    gap&gt; f := aux[1][1];
    [ f1, f2 ] -&gt; [ f1*f2, f1*f2^2 ]
    gap&gt; phi := Group( f );
    &lt;group with 1 generators&gt;
    gap&gt; G := aux[2]; 
    &lt;pc group of size 9 with 2 generators&gt;
    gap&gt; D3 := DesignFromFerreroPair( G, phi, "*" );
    &lt;a 2 - ( 9, 4, 3 ) nearring generated design&gt;
    gap&gt; # D3 is actually isomorphic to D1
</pre>
<p>
<a name = "SECT001"></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 <var>{Ncdota+b | ainC, bin<var>N</var>}</var> as set of
blocks. Here <var>C</var> is the set of elements <var>ainN</var> such that <var>acdotN = N</var>.
<p>
<pre>
    gap&gt; n := LibraryNearRing( GTW9_1, 202 );
    LibraryNearRing(9/1, 202)
    gap&gt; IsWdNearRing( n );
    true
    gap&gt; DesignFromWdNearRing( n );
    &lt;a 1 - ( 9, 5, 10 ) nearring generated design&gt;
</pre>
<p>
<p>
<h2><a name="SECT002">11.2 Properties of a design</a></h2>
<p><p>
<a name = "SECT002"></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&gt; D1;
    &lt;a 2 - ( 9, 4, 3 ) nearring generated design&gt;
    gap&gt; 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&gt; PointsOfDesign( D1 ){[2,4]};
    [ ((4,5,6)), ((1,2,3)) ]
    gap&gt; # returns the points in position 2 and 4 
</pre>
<p>
<a name = "SECT002"></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&gt; Length( BlocksOfDesign( D1 ) );
    18
    gap&gt; BlocksOfDesign( D1 ){[3]};
    [ [ ((4,6,5)), (()), ((1,2,3)(4,5,6)), ((1,3,2)(4,5,6)) ] ]
    gap&gt; # returns the block in position 3 as a list of points
</pre>
<p>
<a name = "SECT002"></a>
<li><code>DesignParameter( </code><var>D</var><code> )</code>
<p>
<code>DesignParameter</code> returns the set of paramaters <var>t, v, b, r, k, lambda</var> 
of the design <var>D</var>. Here <var>v</var> is the size of the set of points 
<code>PointsOfDesign</code>, <var>b</var> is the size of the set of blocks <code>PointsOfDesign</code>,
every point is incident with precisely <var>r</var> blocks, every block is incident 
with precisely <var>k</var> points, every <var>t</var> distinct points are together incident
with precisely <var>lambda</var> blocks. 
<p>
<pre>
    gap&gt; DesignParameter( D1 );
    [ 2, 9, 18, 8, 4, 3 ]
    gap&gt; # t = 2, v = 9, b = 18, r = 8, k = 4, lambda = 3
</pre>
<p>
<a name = "SECT002"></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 <var>i</var> is incident with the block in position <var>j</var>, then
the <var>( i, j )</var> entry of the matrix <code>IncidenceMat</code> is <var>1</var>, else it is <var>0</var>.
<p>
<pre>
    gap&gt; 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 = "SECT002"></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 <var>i</var> is 
incident with the block in position <var>j</var>, then there is <var>1</var> in the <var>i</var>-th
row, <var>j</var>-th column, else there is '.', a dot.
<p>
<pre>
    gap&gt; 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 = "SECT002"></a>
<li><code>BlockIntersectionNumbers( </code><var>D</var><code> )</code>
<a name = "SECT002"></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&gt; BlockIntersectionNumbers( D1, 2 );
    [ 0, 4, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 1, 2, 1 ]
    gap&gt; # the second has empty intersection with the first block
    gap&gt; # and intersects all others in at most 2 points
</pre>
<p>
<a name = "SECT002"></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&gt; 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 = "SECT003"></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&gt; IsPointIncidentBlock( D1, 3, 1 );
    true
    gap&gt; # point 3 is incident with block 1
    gap&gt; IsPointIncidentBlock( D1, 3, 2 );       
    false
</pre>
<p>
<a name = "SECT003"></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&gt; PointsIncidentBlocks( D1, [1, 4] );                 
    [ 4, 7 ]
    gap&gt; # block 1 and block 4 are together incident with 
    gap&gt; # points 4 and 7
</pre>
<p>
<a name = "SECT003"></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&gt; BlocksIncidentPoints( D1, [2, 7] );   
    [ 1, 12, 15 ]
    gap&gt; # point 2 and point 7 are together incident with     
    gap&gt; # blocks 1, 12, 15
    gap&gt; 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&gt; # the actual point sets of blocks 1, 12, and 15 
    gap&gt; BlocksIncidentPoints( D1, [2, 3, 7] );
    [ 1 ]
    gap&gt; # points 2, 3, 7 are together incident with block 1
    gap&gt; PointsIncidentBlocks( D1, [1] );
    [ 2, 3, 4, 7 ]
    gap&gt; # 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>November 2008
</address></body></html>