Goto Chapter: Top 1 2 3 4 Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

2 The functionality of this package
 2.1 Basic contruction of origamis
 2.2 The SL_2( Z)-action
 2.3 Equivalence of origamis and normal forms
 2.4 Computing attributes of origamis
 2.5 Normal Origamis
 2.6 Constructing examples of origamis

2 The functionality of this package

2.1 Basic contruction of origamis

2.1-1 Origami
‣ Origami( sigma_x, sigma_y )( operation )

Returns: An origami.

This function constructs an Origami object from two given permutations σ_x and σ_y. A test is performed to check whether the surface described by the given permutations is connected, i.e. whether the group generated by the two permutations acts transitively.

    
    gap> O := Origami((1,2,3,4,5),(5,6));
    Origami((1,2,3,4,5), (5,6), 6)
    
    
‣ OrigamiNC( sigma_x, sigma_y )( operation )

Returns: An origami.

This function constructs an Origami object from two given permutations σ_x and σ_y without checking whether or not the described surface is connected.

    
    gap> O := OrigamiNC((1,2,3,4,5),(5,6));
    Origami((1,2,3,4,5), (5,6), 6)
    
    
‣ HorizontalPerm( O )( attribute )

Returns: A permutation.

Returns the permutation σ_x describing the horizontal glueing of the unit squares.

      
      gap> O := Origami((1,2,3,4,5),(5,6));
      Origami((1,2,3,4,5), (5,6), 6)
      gap> HorizontalPerm(O);
      (1,2,3,4,5)
      
    
‣ VerticalPerm( O )( attribute )

Returns: A permutation.

Returns the permutation σ_y describing the vertical glueing of the unit squares.

      
      gap> O := Origami((1,2,3,4,5),(5,6));
      Origami((1,2,3,4,5), (5,6), 6)
      gap> VerticalPerm(O);
      (5,6)
      
    
‣ DegreeOrigami( O )( attribute )

Returns: A positive integer.

Returns the degree of the origami O, i.e. the number of unit squares which are glued together. In terms of permutations, the degree corresponds to the largest moved point of σ_x and σ_y.

      
      gap> O := Origami((1,2,3,4,5),(5,6));
      Origami((1,2,3,4,5), (5,6), 6)
      gap> DegreeOrigami(O);
      6
      
    

2.2 The SL_2( Z)-action

The group SL_2( Z) acts on the set of all origamis via the following formulas:

S.O(\sigma_x, \sigma_y) = O(\sigma_y^{-1}, \sigma_x), \qquad T.O(\sigma_x, \sigma_y) = O(\sigma_x, \sigma_y \sigma_x^{-1})

where S and T denote the standard generators


                     [ 0 -1 ]            [ 1  1 ]
                 S = [ 1  0 ],       T = [ 0  1 ]
  

of SL_2( Z). The succeeding methods implement this action in GAP.

2.2-1 ActionOfS
‣ ActionOfS( O )( operation )

Returns: An origami.

For a given origami O this methods computes the origami S.O as described above.

      
      gap> O:= Origami((1,6,4,7,5,3)(2,8), (1,4,5,3,8,2,6), 8);
      Origami((1,6,4,7,5,3)(2,8), (1,4,5,3,8,2,6), 8)
      gap> ActionOfS(O);
      Origami((1,6,2,8,3,5,4), (1,6,4,7,5,3)(2,8), 8)
      
    
‣ ActionOfT( O )( operation )

Returns: An origami.

For a given origami O this methods computes the origami T.O as described above.

      
      gap> O:= Origami((1,6,4,7,5,3)(2,8), (1,4,5,3,8,2,6), 8);
      Origami((1,6,4,7,5,3)(2,8), (1,4,5,3,8,2,6), 8)
      gap> ActionOfT(O);
      Origami((1,6,4,7,5,3)(2,8), (1,6,3,2)(4,7), 8)
      
    
‣ ActionOfSInv( O )( operation )

Returns: An origami.

For a given origami O this methods computes the origami S^-1.O.

      
      gap> O:= Origami((1,6,4,7,5,3)(2,8), (1,4,5,3,8,2,6), 8);
      Origami((1,6,4,7,5,3)(2,8), (1,4,5,3,8,2,6), 8)
      gap> ActionOfSInv(O);
      Origami((1,4,5,3,8,2,6), (1,3,5,7,4,6)(2,8), 8)
      
    
‣ ActionOfTInv( O )( operation )

Returns: An origami.

For a given origami O this methods computes the origami T^-1.O.

      
      gap> O:= Origami((1,6,4,7,5,3)(2,8), (1,4,5,3,8,2,6), 8);
      Origami((1,6,4,7,5,3)(2,8), (1,4,5,3,8,2,6), 8)
      gap> ActionOfTInv(O);
      Origami((1,6,4,7,5,3)(2,8), (1,7,5)(2,4,3), 8)
      
    
‣ ActionOfSL2( w, O )( operation )

Returns: An origami.

For a given origami O and a word w in S and T (given as a string), this methods computes the origami w^-1.O.

      
      gap> O:= Origami((1,6,4,7,5,3)(2,8), (1,4,5,3,8,2,6), 8);
      Origami((1,6,4,7,5,3)(2,8), (1,4,5,3,8,2,6), 8)
      gap> ActionOfSL2("S*T", O);
      Origami((1,6,2,8,3,5,4), (3,4,7)(5,8,6), 8)
      
    

2.3 Equivalence of origamis and normal forms

We consider two origamis to be equivalent (or isomorphic), if they are the same up to relabeling the squares. In terms of pairs of permutations, this corresponds to simultaneous conjugation. Equivalence can be checked by computing a certain normal form for origamis.

2.3-1 OrigamiNormalForm
‣ OrigamiNormalForm( O )( operation )

Returns: An origami.

Computes a normal form of a given origami. This normal form has the property that two origamis are equivalent if and only if their normal form are equal. Note that this method does not copy any previously computed attributes from the old origami to the new one.

      
      gap> O := Origami((1,3,2,4),(2,3));
      Origami((1,3,2,4), (2,3), 4)
      gap> OrigamiNormalForm(O);
      Origami((1,2,3,4), (3,4), 4)
      
    
‣ CopyOrigamiInNormalForm( O )( operation )

Returns: An origami.

This method does the same as OrigamiNormalForm but does copy previously computed attributes.

‣ OrigamisEquivalent( O1, O2 )( operation )

Returns: Two origamis.

Checks whether two given origamis are equivalent by comparing their normal forms.

      
      gap> P := Origami((1,2,3,4), (3,4), 4);
      Origami((1,2,3,4), (3,4), 4)
      gap> O := Origami((1,3,2,4),(2,3));
      Origami((1,3,2,4), (2,3), 4)
      gap> OrigamisEquivalent(O, P);
      true
      
    

2.4 Computing attributes of origamis

2.4-1 Stratum
‣ Stratum( O )( attribute )

Returns: A (possibly empty) list of positive integers.

This function calculates the stratum of an origami, i.e. the list of the nonzero degrees of the singularities. For a singularity of cone angle 2 k π the degree of the singularity is k-1.

      
      gap> Stratum(Origami((1,6,4,7,5,3)(2,8), (1,4,5,3,8,2,6)));
      [ 1, 5 ]
      
    
‣ Genus( O )( attribute )

Returns: A non-negative integer.

Calculates the genus of an origami.

    
    gap> Genus(Origami((1,2,3,4), (1,2)(3,4)));
    2
    
    
‣ IndexOfMonodromyGroup( O )( attribute )

Returns: A positive integer.

Calculates the index of the monodromy group of an origami, i.e. the index of the subgroup generated by σ_x and σ_y in S_d where d is the degree of the origami.

    
    gap> IndexOfMonodromyGroup(Origami((1,3,6)(4,5),(2,4,3,5)(7,1)));
    1
    
    
‣ VeechGroup( O )( attribute )

Returns: A subgroup of SL_2( Z).

The Veech group of an origami is a finite-index subgroup of SL_2(Z). In GAP it is is represented as a ModularSubgroup from the ModularGroup package. It is determined by two permutations σ_S and σ_T describing how the generators S and T of SL_2(Z) act on the cosets. See [Sch04] for a detailed description of the algorithm used to compute the Veech group.

    
    gap> O := Origami((1,2,5)(3,4,6), (1,2)(5,6));
    Origami((1,2,5)(3,4,6), (1,2)(5,6), 6)
    gap> G := VeechGroup(O);
    <modular subgroup of index 10>
    gap> Display(G);
    ModularSubgroup(
    S : ( 1, 2)( 3, 6)( 4, 7)( 5, 8)( 9,10)
    T : ( 1, 3)( 2, 4, 5)( 6, 8,10, 9, 7)
    R : ( 1, 8, 7)( 2, 6)( 3, 4,10, 9, 5)
    J : ( 1, 5, 6)( 2, 3, 7)( 4, 9, 8) )
    
    
‣ VeechGroupAndOrbit( O )( operation )

Returns: A record.

Computes both the Veech group and the orbit under the SL_2( Z) action of a given origami O. Also returns the matrices with map the origami O to the corresponding orbit elements. The returned record has the following format:

‣ DeckGroup( O )( attribute )

Returns: A group.

Computes the group of deck transformations of the origami O as a covering of the once punctured torus. Note that the deck transformations can be seen as permutations of the squares of the origami.

    
    gap> O := Origami((1,2,3,4,5), (), 5);
    Origami((1,2,3,4,5), (), 5)
    gap> DeckGroup(O);
    Group([ (), (1,2,3,4,5), (1,3,5,2,4), (1,4,2,5,3), (1,5,4,3,2) ])
    
    
‣ IsElementOfDeckGroup( p, O )( operation )

Returns: A boolean.

Checks whether or not the permutation p defines a deck transformation of the origami O.

‣ IsNormalOrigami( O )( attribute )

Returns: A boolean.

Checks whether or not a given origami is normal. An origami is called normal if its deck group acts transitively on the fibers of the covering.

    
    gap> O := Origami((1,2,3,4,5), (), 5);
    Origami((1,2,3,4,5), (), 5)
    gap> IsNormalOrigami(O);
    true
    
    
‣ SumOfLyapunovExponents( O )( function )

Returns: A positiv Integer.

This function calculates the sum of the positive Lyapunov exponents of the Origami O.

      
      gap> O:=Origami((1,2,3,4,5,6,7,8,9),(1,3)(2,4,8)(5,7));
      Origami((1,2,3,4,5,6,7,8,9), (1,3)(2,4,8)(5,7), 9)
      gap> SumOfLyapunovExponents(O);
      32/15
      
    

2.5 Normal Origamis

Normal origamis can equivalently be described by a finite group G and a pair x, y of generators of G. The elements of G correspond to squares and the horizontal (resp. vertical) glueing is determined by left multiplication with x (resp. y), i.e. if g,h ∈ G then g is glued to h in the x-direction if xg = h and analogously for the y-direction. The group G is then evidently the deck group of the described origami. Furthermore, every normal origami is of this form where G is its deck group. Two normal origamis (x, y, G), (x',y',G) given in such a form are equivalent if and only if there is an automorphism φ ∈ Aut(G) of G such that φ(x) = x' and φ(y) = y'. We introduce a new GAP-category called IsNormalStoredOrigami which is a subcategory of the Origami-category for representing normal origamis which are given in terms of the above data. Since every NormalStoredOrigami is also an Origami, every method implemented for Origamis is also available for NormalStoredOrigamis.

2.5-1 NormalStoredOrigami
‣ NormalStoredOrigami( x, y, G )( operation )

Returns: A normal origami.

For a given finite group G and two generators x, y this method constructs a new normal origami in the way described above. It is given as a NormalStoredOrigami object. This constructor checks whether or not G is actually generated by x and y.

    
    gap> G := AlternatingGroup(8);
    Alt( [ 1 .. 8 ] )
    gap> gen := MinimalGeneratingSet(G);
    [ (1,2,3,4,5,6,7), (6,7,8) ]
    gap> x := gen[1];; y := gen[2];;
    gap> O := NormalStoredOrigami(x, y, G);
    Normal Origami( A_8.1^-1*A_8.2*A_8.1 , A_8.1^-1*A_8.2, Group( [ A_8.1, A_8.2 ]) )
    
    
‣ NormalStoredOrigamiNC( x, y, G )( operation )

Returns: A normal origami.

Does the same as the NormalStoredOrigami constructor above but does not check whether or not G is generated by x and y.

‣ HorizontalElement( O )( attribute )

Returns: A group element.

For a NormalStoredOrigami, this method returns the x-element which describes the glueing in the horizontal direction.

‣ VerticalElement( O )( attribute )

Returns: A group element.

For a NormalStoredOrigami, this method returns the y-element which describes the glueing in the vertical direction.

‣ AsPermutationRepresentation( O )( operation )

Returns: An origami.

Converts a NormalStoredOrigami into an Origami, i.e. computes the x- and y-permutations describing the glueing of the squares.

    
    gap> G := AlternatingGroup(4);
    Alt( [ 1 .. 4 ] )
    gap> gen := MinimalGeneratingSet(G);
    [ (2,4,3), (1,3)(2,4) ]
    gap> x := gen[1];; y := gen[2];;
    gap> O := NormalStoredOrigami(x, y, G);
    Normal Origami( f1 , f2, Group( [ f1, f2, f3 ] ) )
    gap> AsPermutationRepresentation(O);
    Origami((1,2,5)(3,6,9)(4,7,10)(8,11,12), (1,3)(2,7)(4,8)(5,12)(6,11)(9,10), 12)
    
    
‣ AsPermutationRepresentation( O )( operation )

Returns: An origami.

Converts a normal Origami into a NormalStoredOrigami.

‣ AllNormalOrigamisFromGroup( G )( operation )

Returns: A list of normal origamis.

For a given group G, this method computes all normal origamis (up to equivalence) which can be build from G.

    
    gap> G := AlternatingGroup(4);
    Alt( [ 1 .. 4 ] )
    gap> AllNormalOrigamisFromGroup(G);
    [ Normal Origami( f3 , f1*f3, Group( [ f1, f2, f3 ] ) ),
    Normal Origami( f1 , f3, Group( [ f1, f2, f3 ] ) ),
    Normal Origami( f1 , f1*f3, Group( [ f1, f2, f3 ] ) ),
    Normal Origami( f1 , f1^2*f3, Group( [ f1, f2, f3 ] ) ) ]
    
    
‣ AllNormalOrigamisByDegree( d )( operation )

Returns: A list of normal origamis.

Computes all normal origamis (up to equivalence) with degree d.

    
    gap> AllNormalOrigamisByDegree(5);
    [ Normal Origami( <identity> of ... , f1, Group( [ f1 ] ) ),
    Normal Origami( f1 , <identity> of ..., Group( [ f1 ] ) ),
    Normal Origami( f1 , f1, Group( [ f1 ] ) ),
    Normal Origami( f1 , f1^2, Group( [ f1 ] ) ),
    Normal Origami( f1 , f1^3, Group( [ f1 ] ) ),
    Normal Origami( f1 , f1^4, Group( [ f1 ] ) ) ]
    
    

2.6 Constructing examples of origamis

In this section we describe some methods for constructing explicit examples and families of origamis.

2.6-1 AllOrigamisByDegree
‣ AllOrigamisByDegree( d )( operation )

Returns: A list of origamis.

Returns a list of all origamis of degree d up to equivalence.

‣ AllOrigamisInStratum( d, stratum )( operation )

Returns: A list of origamis.

Returns a list of all origamis of degree d in the given stratum.

    
    gap> OrigamiListInStratum(4, [1,1]);
    [ Origami((1,2), (1,3)(2,4), 4), Origami((1,2), (1,3,2,4), 4),
      Origami((1,2)(3,4), (2,3), 4), Origami((1,2)(3,4), (2,3,4), 4),
      Origami((1,2)(3,4), (1,2,3,4), 4), Origami((1,2,3), (2,3,4), 4),
      Origami((1,2,3), (2,4,3), 4), Origami((1,2,3), (1,2)(3,4), 4),
      Origami((1,2,3,4), (2,4), 4), Origami((1,2,3,4), (1,2)(3,4), 4) ]
    
    
‣ RandomOrigami( d )( operation )

Returns: An origami.

Returns random origami of degree d.

    
    gap> RandomOrigami(6);
    Origami((1,3,5,6,4), (2,3,4,5,6), 6)
    
    
‣ XOrigami( d )( operation )

Returns: An origami.

This function calculates an origami of degree 2d. The permutations are given by /sigma_h = (1,...,2k) and /sigma_v=(1,2)(3,4)...(2k, 2k-1).

      gap> XOrigami(2);
      Origami((1,2,3,4), (1,2)(3,4), 4)
    
‣ ElevatorOrigami( l, h, s )( operation )

Returns: An origami.

The function calculates an Origami similar to the staircase origami, but the first tile of the first step and the last tile of the last tile are connected. The permutations are given by /sigma_h= (1,..., a)/circ(a + b + 1,...,2a + b)/circ(2a + 2b + 1,...,3a + 2b)/circ... /circ((d - 1)(a + b) + 1,...,da + (d - 1)b) and /sigma_v = (a, a + 1,...,a + b + 1)/circ(2a + b, 2a + b + 1,...,2a + 2b + 1)/circ... /circ (da + (d - 1)b, da + (d - 1)b + 1,..., d(a + b),1)

      gap>  Elevator(2,0,3);
      Origami((1,2)(3,5)(4,6), (1,3)(2,4)(5,6), 6)
    
‣ StaircaseOrigami( l, h, s )( operation )

Returns: An origami.

This function calculates a "staircase" origami of steps steps. Each step has length length and height height. The permutations are given by /sigma_h= (1,..., a)/circ(a + b + 1,...,2a + b)/circ(2a + 2b + 1,...,3a + 2b)/circ... /circ((d - 1)(a + b) + 1,...,da + (d - 1)b) and /sigma_v = (a, a + 1,...,a + b + 1)/circ(2a + b, 2a + b + 1,...,2a + 2b + 1)/circ... /circ (da + (d - 1)b, da + (d - 1)b + 1,..., d(a + b))

      gap> Staircase(2,0,3);
      Origami((1,2)(3,4)(5,6), (2,3)(4,5), 6)
    
‣ QuasiRegularOrigami( G, H, r, u )( operation )

Returns: An origami.

The function calculates an origami by a given group G and a subgroup of G H. H must not contain any normal subgroups of G and r and u are the generators of G. We identify the tiles of the origami with the right cosets of H in G. The right neighbour of the tile Hg is the tile Hgr and the upper neighbour of Hg is Hgu.

      G:=SymmetricGroup(3);
      Sym( [ 1 .. 3 ] )
      gap> H:=Group(());
      Group(())
      gap>QuasiRegularOrigami(G,H,(1,2),(2,3));
      Origami((1,2)(3,5)(4,6), (1,3)(2,4)(5,6), 6)
    
‣ QROFromGroup( G )( operation )

Returns: A list of origamis.

Returns a list of all quasi-regular origamis which can be build from the group G.

‣ QROFromOrder( d )( operation )

Returns: A list of origamis.

Returns a list of all quasi-regular origamis of order d.

 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 Bib Ind

generated by GAPDoc2HTML