1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>GAP (HAPcryst) - Chapter 4: Resolutions of Crystallographic Groups</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="generator" content="GAPDoc2HTML" />
<link rel="stylesheet" type="text/css" href="manual.css" />
<script src="manual.js" type="text/javascript"></script>
<script type="text/javascript">overwriteStyle();</script>
</head>
<body class="chap4" onload="jscontent()">
<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a> <a href="chap1.html">1</a> <a href="chap2.html">2</a> <a href="chap3.html">3</a> <a href="chap4.html">4</a> <a href="chapBib.html">Bib</a> <a href="chapInd.html">Ind</a> </div>
<div class="chlinkprevnexttop"> <a href="chap0.html">[Top of Book]</a> <a href="chap0.html#contents">[Contents]</a> <a href="chap3.html">[Previous Chapter]</a> <a href="chapBib.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap4_mj.html">[MathJax on]</a></p>
<p><a id="X852C41A77C759D82" name="X852C41A77C759D82"></a></p>
<div class="ChapSects"><a href="chap4.html#X852C41A77C759D82">4 <span class="Heading">Resolutions of Crystallographic Groups</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X7F48638F817A14B0">4.1 <span class="Heading">Fundamental Domains</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X79F4F7938116201E">4.1-1 FundamentalDomainStandardSpaceGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7A07AB55831F212F">4.1-2 FundamentalDomainBieberbachGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X86A09AC4842827C9">4.1-3 FundamentalDomainFromGeneralPointAndOrbitPartGeometric</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X824BC99584F5F865">4.1-4 IsFundamentalDomainStandardSpaceGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7D79DD6E87BCC1DC">4.1-5 IsFundamentalDomainBieberbachGroup</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X78D68F6087238F97">4.2 <span class="Heading">Face Lattice and Resolution</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7CA87AA478007468">4.2-1 ResolutionBieberbachGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7E854FC47F9E479E">4.2-2 FaceLatticeAndBoundaryBieberbachGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X79A0B28A7FAE31B9">4.2-3 ResolutionFromFLandBoundary</a></span>
</div></div>
</div>
<h3>4 <span class="Heading">Resolutions of Crystallographic Groups</span></h3>
<p><a id="X7F48638F817A14B0" name="X7F48638F817A14B0"></a></p>
<h4>4.1 <span class="Heading">Fundamental Domains</span></h4>
<p>Let <span class="SimpleMath">S</span> be a crystallographic group. A Fundamental domain is a closed convex set containing a system of representatives for the Orbits of <span class="SimpleMath">S</span> in its natural action on euclidian space.<br /> There are two algorithms for calculating fundamental domains in <strong class="pkg">HAPcryst</strong>. One uses the geometry and relies on having the standard rule for evaluating the scalar product (i.e. the gramian matrix is the identity). The other one is independent of the gramian matrix but does only work for Bieberbach groups, while the first ("geometric") algorithm works for arbitrary crystallographic groups given a point with trivial stabilizer.</p>
<p><a id="X79F4F7938116201E" name="X79F4F7938116201E"></a></p>
<h5>4.1-1 FundamentalDomainStandardSpaceGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FundamentalDomainStandardSpaceGroup</code>( [<var class="Arg">v</var>, ]<var class="Arg">G</var> )</td><td class="tdright">( method )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FundamentalDomainStandardSpaceGroup</code>( <var class="Arg">v</var>, <var class="Arg">G</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a <code class="keyw">PolymakeObject</code></p>
<p>Let <var class="Arg">G</var> be an <code class="keyw">AffineCrystGroupOnRight</code> and <var class="Arg">v</var> a vector. A fundamental domain containing <var class="Arg">v</var> is calculated and returned as a <code class="keyw">PolymakeObject</code>. The vector <var class="Arg">v</var> is used as the starting point for a Dirichlet-Voronoi construction. If no <var class="Arg">v</var> is given, the origin is used as starting point if it has trivial stabiliser. Otherwise an error is cast. <br /></p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">fd:=FundamentalDomainStandardSpaceGroup([1/2,0,1/5],SpaceGroup(3,9));</span>
<polymake object>
<span class="GAPprompt">gap></span> <span class="GAPinput">Polymake(fd,"N_VERTICES");</span>
24
<span class="GAPprompt">gap></span> <span class="GAPinput">fd:=FundamentalDomainStandardSpaceGroup(SpaceGroup(3,9));</span>
<polymake object>
<span class="GAPprompt">gap></span> <span class="GAPinput">Polymake(fd,"N_VERTICES");</span>
8
</pre></div>
<p><a id="X7A07AB55831F212F" name="X7A07AB55831F212F"></a></p>
<h5>4.1-2 FundamentalDomainBieberbachGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FundamentalDomainBieberbachGroup</code>( <var class="Arg">G</var> )</td><td class="tdright">( method )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FundamentalDomainBieberbachGroup</code>( <var class="Arg">v</var>, <var class="Arg">G</var>[, <var class="Arg">gram</var>] )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a <code class="keyw">PolymakeObject</code></p>
<p>Given a starting vector <var class="Arg">v</var> and a Bieberbach group <var class="Arg">G</var> in standard form, this method calculates the Dirichlet domain with respect to <var class="Arg">v</var>. If <var class="Arg">gram</var> is not supplied, the average gramian matrix is used (see <code class="func">GramianOfAverageScalarProductFromFiniteMatrixGroup</code> (<a href="chap2.html#X7A94DAE679AD73E3"><span class="RefLink">2.3-1</span></a>)). It is not tested if <var class="Arg">gram</var> is symmetric and positive definite. It is also not tested, if the product defined by <var class="Arg">gram</var> is invariant under the point group of <var class="Arg">G</var>.</p>
<p>The behaviour of this function is influenced by the option <code class="keyw">ineqThreshold</code>. The algorithm calculates approximations to a fundamental domain by iteratively adding inequalities. For an approximating polyhedron, every vertex is tested to find new inequalities. When all vertices have been considered or the number of new inequalities already found exceeds the value of <code class="keyw">ineqThreshold</code>, a new approximating polyhedron in calculated. The default for <code class="keyw">ineqThreshold</code> is 200. Roughly speaking, a large threshold means shifting work from <code class="keyw">polymake</code> to <strong class="pkg">GAP</strong>, a small one means more calls of (and work for) <code class="keyw">polymake</code>.</p>
<p>If the value of <code class="func">InfoHAPcryst</code> (<a href="chap1.html#X78B0A21E7FD0F3BB"><span class="RefLink">1.3-1</span></a>) is 2 or more, for each approximation the number of vertices of the approximation, the number of vertices that have to be considered during the calculation, the number of facets, and new inequalities is shown.</p>
<p>Note that the algorithm chooses vertices in random order and also writes inequalities for <code class="keyw">polymake</code> in random order.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">a0:=[[ 1, 0, 0, 0, 0, 0, 0 ], [ 0, -1, 0, 0, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 1, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, -1, -1, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ -1/2, 0, 0, 1/6, 0, 0, 1 ] </span>
<span class="GAPprompt">></span> <span class="GAPinput"> ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">a1:=[[ 0, -1, 0, 0, 0, 0, 0 ],[ 0, 0, -1, 0, 0, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 0, 0, 1, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 0, 0, 1/3, -1/3, 1 ] </span>
<span class="GAPprompt">></span> <span class="GAPinput"> ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">trans:=List(Group((1,2,3,4,5,6)),g-></span>
<span class="GAPprompt">></span> <span class="GAPinput"> TranslationOnRightFromVector(Permuted([1,0,0,0,0,0],g)));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">S:=AffineCrystGroupOnRight(Concatenation(trans,[a0,a1]));</span>
<matrix group with 8 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetInfoLevel(InfoHAPcryst,2);</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">FundamentalDomainBieberbachGroup(S:ineqThreshold:=10);</span>
#I v: 104/104 f:15
#I new: 201
#I v: 961/961 f:58
#I new: 20
#I v: 1143/805 f:69
#I new: 12
#I v: 1059/555 f:64
#I new: 15
#I v: 328/109 f:33
#I new: 12
#I v: 336/58 f:32
#I new: 0
<polymake object>
<span class="GAPprompt">gap></span> <span class="GAPinput">FundamentalDomainBieberbachGroup(S:ineqThreshold:=1000);</span>
#I v: 104/104 f:15
#I new: 149
#I v: 635/635 f:41
#I new: 115
#I v: 336/183 f:32
#I new: 0
#I out of inequalities
<polymake object>
</pre></div>
<p><a id="X86A09AC4842827C9" name="X86A09AC4842827C9"></a></p>
<h5>4.1-3 FundamentalDomainFromGeneralPointAndOrbitPartGeometric</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FundamentalDomainFromGeneralPointAndOrbitPartGeometric</code>( <var class="Arg">v</var>, <var class="Arg">orbit</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a <code class="keyw">PolymakeObject</code></p>
<p>This uses an alternative algorithm based on geometric considerations. It is not used in any of the high-level methods. Let <var class="Arg">v</var> be a vector and <var class="Arg">orbit</var> a sufficiently large part of the orbit of <var class="Arg">v</var> under a crystallographic group with standard- orthogonal point group (satisfying <span class="SimpleMath">A^t=A^-1</span>). A geometric algorithm is then used to calculate the Dirichlet domain with respect to <var class="Arg">v</var>. This also works for crystallographic groups which are not Bieberbach. The point <var class="Arg">v</var> has to have trivial stabilizer.<br /> The intersection of the full orbit with the unit cube around <var class="Arg">v</var> is sufficiently large.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=SpaceGroup(3,9);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">v:=[0,0,0];</span>
[ 0, 0, 0 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">orbit:=OrbitStabilizerInUnitCubeOnRight(G,v).orbit;</span>
[ [ 0, 0, 0 ], [ 0, 0, 1/2 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">fd:=FundamentalDomainFromGeneralPointAndOrbitPartGeometric(v,orbit);</span>
<polymake object>
<span class="GAPprompt">gap></span> <span class="GAPinput">Polymake(fd,"N_VERTICES");</span>
8
</pre></div>
<p><a id="X824BC99584F5F865" name="X824BC99584F5F865"></a></p>
<h5>4.1-4 IsFundamentalDomainStandardSpaceGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsFundamentalDomainStandardSpaceGroup</code>( <var class="Arg">poly</var>, <var class="Arg">G</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: true or false</p>
<p>This tests if a <code class="keyw">PolymakeObject</code> <var class="Arg">poly</var> is a fundamental domain for the affine crystallographic group <var class="Arg">G</var> in standard form.<br /> The function tests the following: First, does the orbit of any vertex of <var class="Arg">poly</var> have a point inside <var class="Arg">poly</var> (if this is the case, <code class="code">false</code> is returned). Second: Is every facet of <var class="Arg">poly</var> the image of a different facet under a group element which does not fix <var class="Arg">poly</var>. If this is satisfied, <code class="code">true</code> is returned.</p>
<p><a id="X7D79DD6E87BCC1DC" name="X7D79DD6E87BCC1DC"></a></p>
<h5>4.1-5 IsFundamentalDomainBieberbachGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsFundamentalDomainBieberbachGroup</code>( <var class="Arg">poly</var>, <var class="Arg">G</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: true, false or fail</p>
<p>This tests if a <code class="keyw">PolymakeObject</code> <var class="Arg">poly</var> is a fundamental domain for the affine crystallographic group <var class="Arg">G</var> in standard form and if this group is torsion free (ie a Bieberbach group)<br /> It returns <code class="keyw">true</code> if <var class="Arg">G</var> is torsion free and <var class="Arg">poly</var> is a fundamental domain for <var class="Arg">G</var>. If <var class="Arg">poly</var> is not a fundamental domain, <code class="keyw">false</code> is returned regardless of the structure of <var class="Arg">G</var>. And if <var class="Arg">G</var> is not torsion free, the method returns <code class="keyw">fail</code>. If <var class="Arg">G</var> is polycyclic, torsion freeness is tested using a representation as pcp group. Otherwise the stabilisers of the faces of the fundamental domain <var class="Arg">poly</var> are calculated (<var class="Arg">G</var> is torsion free if and only if it all these stabilisers are trivial).</p>
<p><a id="X78D68F6087238F97" name="X78D68F6087238F97"></a></p>
<h4>4.2 <span class="Heading">Face Lattice and Resolution</span></h4>
<p>For Bieberbach groups (torsion free crystallographic groups), the following functions calcualte free resolutions. This calculation is done by finding a fundamental domain for the group. For a description of the <code class="keyw">HapResolution</code> datatype, see the <strong class="pkg">Hap</strong> data types documentation or the experimental datatypes documentation <a href="../../../pkg/hapcryst/lib/datatypes/doc/chap1_mj.html#X7C6DD73E7BB931AB"><span class="RefLink">HAPprog: Resolutions in Hap</span></a></p>
<p><a id="X7CA87AA478007468" name="X7CA87AA478007468"></a></p>
<h5>4.2-1 ResolutionBieberbachGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ResolutionBieberbachGroup</code>( <var class="Arg">G</var>[, <var class="Arg">v</var>] )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a <code class="keyw">HAPresolution</code></p>
<p>Let <var class="Arg">G</var> be a Bieberbach group given as an <code class="keyw">AffineCrystGroupOnRight</code> and <var class="Arg">v</var> a vector. Then a Dirichlet domain with respect to <var class="Arg">v</var> is calculated using <code class="func">FundamentalDomainBieberbachGroup</code> (<a href="chap4.html#X7A07AB55831F212F"><span class="RefLink">4.1-2</span></a>). From this domain, a resolution is calculated using <code class="func">FaceLatticeAndBoundaryBieberbachGroup</code> (<a href="chap4.html#X7E854FC47F9E479E"><span class="RefLink">4.2-2</span></a>) and <code class="func">ResolutionFromFLandBoundary</code> (<a href="chap4.html#X79A0B28A7FAE31B9"><span class="RefLink">4.2-3</span></a>). If <var class="Arg">v</var> is not given, the origin is used.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=ResolutionBieberbachGroup(SpaceGroup(3,9));</span>
Resolution of length 3 in characteristic
0 for SpaceGroupOnRightBBNWZ( 3, 2, 2, 2, 2 ) .
No contracting homotopy available.
<span class="GAPprompt">gap></span> <span class="GAPinput">List([0..3],Dimension(R));</span>
[ 1, 3, 3, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=ResolutionBieberbachGroup(SpaceGroup(3,9),[1/2,0,0]);</span>
Resolution of length 3 in characteristic
0 for SpaceGroupOnRightBBNWZ( 3, 2, 2, 2, 2 ) .
No contracting homotopy available.
<span class="GAPprompt">gap></span> <span class="GAPinput">List([0..3],Dimension(R));</span>
[ 6, 12, 7, 1 ]
</pre></div>
<p><a id="X7E854FC47F9E479E" name="X7E854FC47F9E479E"></a></p>
<h5>4.2-2 FaceLatticeAndBoundaryBieberbachGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FaceLatticeAndBoundaryBieberbachGroup</code>( <var class="Arg">poly</var>, <var class="Arg">group</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: Record with entries <code class="keyw">.hasse</code> and <code class="keyw">.elts</code> representing a part of the hasse diagram and a lookup table of group elements</p>
<p>Let <var class="Arg">group</var> be a torsion free <code class="keyw">AffineCrystGroupOnRight</code> (that is, a Bieberbach group). Given a <code class="keyw">PolymakeObject</code> <var class="Arg">poly</var> representing a fundamental domain for <var class="Arg">group</var>, this method uses <strong class="pkg">polymaking</strong> to calculate the face lattice of <var class="Arg">poly</var>. From the set of faces, a system of representatives for <var class="Arg">group</var>- orbits is chosen. For each representative, the boundary is then calculated. The list <code class="keyw">.elts</code> contains elements of <var class="Arg">group</var> (in fact, it is even a set). The structure of the returned list <code class="keyw">.hasse</code> is as follows:</p>
<ul>
<li><p>The <span class="SimpleMath">i</span>-th entry contains a system of representatives for the <span class="SimpleMath">i-1</span> dimensional faces of <var class="Arg">poly</var>.</p>
</li>
<li><p>Each face is represented by a pair of lists <code class="code">[vertices,boundary]</code>. The list of integers <code class="code">vertices</code> represents the vertices of <var class="Arg">poly</var> which are contained in this face. The enumeration is chosen such that an <code class="code">i</code> in the list represents the <span class="SimpleMath">i</span>-th entry of the list <code class="code">Polymake(poly,"VERTICES");</code></p>
</li>
<li><p>The list <code class="code">boundary</code> represents the boundary of the respective face. It is a list of pairs of integers <code class="code">[j,g]</code>. The first entry lies between <span class="SimpleMath">-n</span> and <span class="SimpleMath">n</span>, where <span class="SimpleMath">n</span> is the number of faces of dimension <span class="SimpleMath">i-1</span>. This entry represents a face of dimension <span class="SimpleMath">i-1</span> (or its additive inverse as a module generator). The second entry <code class="code">g</code> is the position of the matrix in <code class="keyw">.elts</code>.</p>
</li>
</ul>
<p>This representation is compatible with the representation of free <span class="SimpleMath">Z G</span> modules in <strong class="pkg">Hap</strong> and this method essentially calculates a free resolution of <var class="Arg">group</var>. If the value of <code class="func">InfoHAPcryst</code> (<a href="chap1.html#X78B0A21E7FD0F3BB"><span class="RefLink">1.3-1</span></a>) is 2 or more, additional information about the number of faces in every codimension, the number of orbits of the group on the free module generated by those faces, and the time it took to calculate the orbit decomposition is output.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetInfoLevel(InfoHAPcryst,2);</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=SpaceGroup(3,165);</span>
SpaceGroupOnRightBBNWZ( 3, 6, 1, 1, 4 )
<span class="GAPprompt">gap></span> <span class="GAPinput">fd:=FundamentalDomainBieberbachGroup(G);</span>
<polymake object>
<span class="GAPprompt">gap></span> <span class="GAPinput">fl:=FaceLatticeAndBoundaryBieberbachGroup(fd,G);;</span>
#I 1(4/8): 0:00:00.004
#I 2(5/18): 0:00:00.000
#I 3(2/12): 0:00:00.000
#I Face lattice done ( 0:00:00.004). Calculating boundary
#I done ( 0:00:00.004) Reformating...
<span class="GAPprompt">gap></span> <span class="GAPinput">RecNames(fl);</span>
[ "hasse", "elts", "groupring" ]
<span class="GAPprompt">gap></span> <span class="GAPinput">fl.groupring;</span>
<free left module over Integers, and ring-with-one, with 10 generators>
</pre></div>
<p><a id="X79A0B28A7FAE31B9" name="X79A0B28A7FAE31B9"></a></p>
<h5>4.2-3 ResolutionFromFLandBoundary</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ResolutionFromFLandBoundary</code>( <var class="Arg">fl</var>, <var class="Arg">group</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: Free resolution</p>
<p>If <var class="Arg">fl</var> is the record output by <code class="func">FaceLatticeAndBoundaryBieberbachGroup</code> (<a href="chap4.html#X7E854FC47F9E479E"><span class="RefLink">4.2-2</span></a>) and <var class="Arg">group</var> is the corresponding group, this function returns a <code class="keyw">HapResolution</code>. Of course, <var class="Arg">fl</var> has to be generated from a fundamental domain for <var class="Arg">group</var></p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=SpaceGroup(3,165);</span>
SpaceGroupOnRightBBNWZ( 3, 6, 1, 1, 4 )
<span class="GAPprompt">gap></span> <span class="GAPinput">fd:=FundamentalDomainBieberbachGroup(G);</span>
<polymake object>
<span class="GAPprompt">gap></span> <span class="GAPinput">fl:=FaceLatticeAndBoundaryBieberbachGroup(fd,G);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ResolutionFromFLandBoundary(fl,G);</span>
Resolution of length 3 in characteristic
0 for SpaceGroupOnRightBBNWZ( 3, 6, 1, 1, 4 ) .
No contracting homotopy available.
<span class="GAPprompt">gap></span> <span class="GAPinput">ResolutionFromFLandBoundary(fl,G);</span>
Resolution of length 3 in characteristic
0 for SpaceGroupOnRightBBNWZ( 3, 6, 1, 1, 4 ) .
No contracting homotopy available.
<span class="GAPprompt">gap></span> <span class="GAPinput">List([0..4],Dimension(last));</span>
[ 2, 5, 4, 1, 0 ]
</pre></div>
<div class="chlinkprevnextbot"> <a href="chap0.html">[Top of Book]</a> <a href="chap0.html#contents">[Contents]</a> <a href="chap3.html">[Previous Chapter]</a> <a href="chapBib.html">[Next Chapter]</a> </div>
<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a> <a href="chap1.html">1</a> <a href="chap2.html">2</a> <a href="chap3.html">3</a> <a href="chap4.html">4</a> <a href="chapBib.html">Bib</a> <a href="chapInd.html">Ind</a> </div>
<hr />
<p class="foot">generated by <a href="http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>
|