Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 418346<Section><Heading>Face Lattice and Resolution</Heading>12For Bieberbach groups (torsion free crystallographic groups), the following3functions calcualte free resolutions. This calculation is done by finding a4fundamental domain for the group.56For a description of the <K>HapResolution</K> datatype, see the7<Package>Hap</Package> data types documentation or the experimental datatypes8documentation <Ref Label="Resolutions in Hap" BookName="HAPprog"/>910<ManSection>11<Meth Name="ResolutionBieberbachGroup" Arg="G [v]"/>12<Returns>a <K>HAPresolution</K></Returns>13<Description>14Let <Arg>G</Arg> be a Bieberbach group given as an15<K>AffineCrystGroupOnRight</K> and <A>v</A> a vector. Then a Dirichlet domain16with respect to <A>v</A> is calculated using17<Ref Meth="FundamentalDomainBieberbachGroup"/>. From this domain, a18resolution is calculated using19<Ref Meth="FaceLatticeAndBoundaryBieberbachGroup"/> and20<Ref Meth="ResolutionFromFLandBoundary"/>. If <A>v</A> is not given, the21origin is used.22</Description>23</ManSection>2425<Example><![CDATA[26gap> R:=ResolutionBieberbachGroup(SpaceGroup(3,9));27Resolution of length 3 in characteristic280 for SpaceGroupOnRightBBNWZ( 3, 2, 2, 2, 2 ) .29No contracting homotopy available.3031gap> List([0..3],Dimension(R));32[ 1, 3, 3, 1 ]33gap> R:=ResolutionBieberbachGroup(SpaceGroup(3,9),[1/2,0,0]);34Resolution of length 3 in characteristic350 for SpaceGroupOnRightBBNWZ( 3, 2, 2, 2, 2 ) .36No contracting homotopy available.3738gap> List([0..3],Dimension(R));39[ 6, 12, 7, 1 ]40]]>41</Example>4243<ManSection>44<Meth Name="FaceLatticeAndBoundaryBieberbachGroup" Arg="poly, group"/>45<Returns> Record with entries <K>.hasse</K> and <K>.elts</K>46representing a part of the hasse diagram and a lookup table of group47elements</Returns>48<Description>49Let <A>group</A> be a torsion free <K>AffineCrystGroupOnRight</K> (that50is, a Bieberbach group).51Given a <K>PolymakeObject</K> <A>poly</A> representing a fundamental52domain for <A>group</A>, this method uses <Package>polymaking</Package>53to calculate the face lattice of <A>poly</A>.54From the set of faces, a system of representatives for <A>group</A>-55orbits is chosen. For each representative, the boundary is then56calculated. The list <K>.elts</K> contains elements of <A>group</A> (in57fact, it is even a set). The structure of the returned list58<K>.hasse</K> is as follows:59<List>60<Item>The <M>i</M>-th entry contains a system of representatives61for the <M>i-1</M> dimensional faces of <A>poly</A>.62</Item>63<Item>Each face is represented by a pair of lists64<C>[vertices,boundary]</C>. The list of integers65<C>vertices</C> represents the vertices of66<A>poly</A> which are contained in this face. The enumeration67is chosen such that an <C>i</C> in the list represents the68<M>i</M>-th entry of the list69<C>Polymake(poly,"VERTICES");</C>70</Item>71<Item> The list <C>boundary</C> represents the boundary of72the respective face. It is a list of pairs of integers73<C>[j,g]</C>. The first entry lies between <M>-n</M> and74<M>n</M>, where <M>n</M> is the number of faces of dimension75<M>i-1</M>. This entry represents a face of dimension76<M>i-1</M> (or its additive inverse as a module generator).77The second entry <C>g</C> is the position of the matrix in78<K>.elts</K>.79</Item>80</List>81This representation is compatible with the representation of free82<M>\Z G</M> modules in <Package>Hap</Package> and this method essentially83calculates a free resolution of <A>group</A>. If the value of84<Ref InfoClass="InfoHAPcryst" /> is 2 or more, additional information about85the number of faces in every codimension, the number of orbits of the group86on the free module generated by those faces, and the time it took to87calculate the orbit decomposition is output.88</Description>89</ManSection>9091<Example><![CDATA[92gap> SetInfoLevel(InfoHAPcryst,2);93gap> G:=SpaceGroup(3,165);94SpaceGroupOnRightBBNWZ( 3, 6, 1, 1, 4 )95gap> fd:=FundamentalDomainBieberbachGroup(G);96<polymake object>97gap> fl:=FaceLatticeAndBoundaryBieberbachGroup(fd,G);;98#I 1(4/8): 0:00:00.00499#I 2(5/18): 0:00:00.000100#I 3(2/12): 0:00:00.000101#I Face lattice done ( 0:00:00.004). Calculating boundary102#I done ( 0:00:00.004) Reformating...103gap> RecNames(fl);104[ "hasse", "elts", "groupring" ]105gap> fl.groupring;106<free left module over Integers, and ring-with-one, with 10 generators>107]]></Example>108109110<ManSection>111<Meth Name="ResolutionFromFLandBoundary" Arg="fl group"/>112<Returns>Free resolution</Returns>113<Description>114If <A>fl</A> is the record output by <Ref115Meth="FaceLatticeAndBoundaryBieberbachGroup"/> and <A>group</A> is116the corresponding group, this function returns a <K>HapResolution</K>.117118Of course, <A>fl</A> has to be generated from a fundamental domain119for <A>group</A>120</Description>121</ManSection>122123<Example><![CDATA[124gap> G:=SpaceGroup(3,165);125SpaceGroupOnRightBBNWZ( 3, 6, 1, 1, 4 )126gap> fd:=FundamentalDomainBieberbachGroup(G);127<polymake object>128gap> fl:=FaceLatticeAndBoundaryBieberbachGroup(fd,G);;129gap> ResolutionFromFLandBoundary(fl,G);130Resolution of length 3 in characteristic1310 for SpaceGroupOnRightBBNWZ( 3, 6, 1, 1, 4 ) .132No contracting homotopy available.133134gap> ResolutionFromFLandBoundary(fl,G);135Resolution of length 3 in characteristic1360 for SpaceGroupOnRightBBNWZ( 3, 6, 1, 1, 4 ) .137No contracting homotopy available.138139gap> List([0..4],Dimension(last));140[ 2, 5, 4, 1, 0 ]141]]></Example>142143</Section>144145