Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/idrel/tst/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 2.9.2025 mit Größe 7 kB image not shown  

Quelle  simsek.tst   Sprache: unbekannt

 
##############################################################################
##
#W  simsek.tst                 Idrel Package                     Chris Wensley
#W                                                             & Anne Heyworth
##
#Y  Copyright (C) 2018-2025 Anne Heyworth and Chris Wensley
##
##  runs an example emailed by Merve Simsek in June 2017 
##  to construct a logged rewrite system 

gap> idrel_save_level := InfoLevel( InfoIdRel );;
gap> SetInfoLevel( InfoIdRel, 0 );;

gap> F := FreeGroup(3);;
gap> u := F.1;;  v := F.2;;  w := F.3;;
gap> rels := [ u^3, v^2, w^2, (u*v)^2, (v*w)^2 ];;
gap> q0 := F/rels;;
gap> SetArrangementOfMonoidGenerators( q0, [1,-1,2,-2,3,-3] );
gap> SetName( q0, "q0" );
gap> frq0 := FreeRelatorGroup( q0 );;
gap> genq0 := GeneratorsOfGroup( q0 );;
gap> genfrq0 := GeneratorsOfGroup( frq0 );;
gap> frhomq0 := FreeRelatorHomomorphism( q0 );
[ q0_R1, q0_R2, q0_R3, q0_R4, q0_R5 ] -> 
[ f1^3, f2^2, f3^2, (f1*f2)^2, (f2*f3)^2 ]
gap> mq0 := MonoidPresentationFpGroup( q0 );
monoid presentation with group relators 
[ q0_M1^3, q0_M3^2, q0_M5^2, (q0_M1*q0_M3)^2, (q0_M3*q0_M5)^2 ]
gap> fmq0 := FreeGroupOfPresentation( mq0 );
<free group on the generators [ q0_M1, q0_M2, q0_M3, q0_M4, q0_M5, q0_M6 ]>
gap> gfmq0 := GeneratorsOfGroup( fmq0 );;
gap> q0labs := [ "a", "A", "b", "B", "c", "C" ];;
gap> SetMonoidPresentationLabels( q0, q0labs );
gap> gprels := GroupRelatorsOfPresentation( mq0 );;
gap> Perform( gprels, Display );
q0_M1^3
q0_M3^2
q0_M5^2
(q0_M1*q0_M3)^2
(q0_M3*q0_M5)^2
gap> invrels := InverseRelatorsOfPresentation( mq0 );;
gap> Perform( invrels, Display );
q0_M1*q0_M2
q0_M3*q0_M4
q0_M5*q0_M6
q0_M2*q0_M1
q0_M4*q0_M3
q0_M6*q0_M5
gap> hompres := HomomorphismOfPresentation( mq0 );
[ q0_M1, q0_M2, q0_M3, q0_M4, q0_M5, q0_M6 ] -> 
[ f1, f1^-1, f2, f2^-1, f3, f3^-1 ]
gap> rws := RewritingSystemFpGroup( q0 );;
gap> PrintLnUsingLabels( rws, gfmq0, q0labs );
[ [ a^-1, A ], [ A^-1, a ], [ b^-1, b ], [ B^-1, b ], [ B, b ], 
[ c^-1, c ], [ C^-1, c ], [ C, c ], [ a*A, id ], [ A*a, id ], 
[ b^2, id ], [ c^2, id ], [ a^2, A ], [ A^2, a ], [ b*a, A*b ], 
[ b*A, a*b ], [ c*b, b*c ], [ c*a*b, b*c*A ], [ c*A*b, b*c*a ] ]
gap> l0 := InitialLoggedRulesOfPresentation( mq0 );;
gap> PrintLnUsingLabels( l0, gfmq0, q0labs );
[ [ a^-1, [ ], A ], [ A^-1, [ ], a ], [ b^-1, [ ], B ], [ B^-1, 
[ ], b ], [ c^-1, [ ], C ], [ C^-1, [ ], c ], [ a*A, [ ], id ], 
[ A*a, [ ], id ], [ b^2, [ [ 2, id ] ], id ], [ b*B, [ ], id ], 
[ B*b, [ ], id ], [ c^2, [ [ 3, id ] ], id ], [ c*C, [ ], id ], 
[ C*c, [ ], id ], [ a^3, [ [ 1, id ] ], id ], [ (a*b)^2, [ [ 4, id ] ], id ], 
[ (b*c)^2, [ [ 5, id ] ], id ] ]
gap> logrws := LoggedRewritingSystemFpGroup( q0 );;
gap> PrintLnUsingLabels( logrws, gfmq0, q0labs );
[ [ a^-1, [ ], A ], [ A^-1, [ ], a ], [ b^-1, [ [ -2, b ] ], b ], 
[ B^-1, [ ], b ], [ B, [ [ -2, b ] ], b ], [ c^-1, [ [ -3, c ] ], c ], 
[ C^-1, [ ], c ], [ C, [ [ -3, c ] ], c ], [ a*A, [ ], id ], 
[ A*a, [ ], id ], [ b^2, [ [ 2, id ] ], id ], [ c^2, [ [ 3, id ] ], id ], 
[ a^2, [ [ 1, id ] ], A ], [ A^2, [ [ -1, id ] ], a ], [ b*a, 
[ [ -2, A*B ], [ 4, a ] ], A*b ], [ b*A, [ [ -4, id ], [ 2, A*B*A ] ], 
a*b ], [ c*b, [ [ -5, id ], [ 3, B*C*B ], [ 2, C*B ] ], b*c ], 
[ c*a*b, [ [ -5, id ], [ 3, B*C*B ], [ 4, a*C*B ] ], b*c*A ], 
[ c*A*b, [ [ -4, a*C ], [ 2, A*B*C ], [ -5, id ], [ 3, B*C*B ], 
[ 2, C*B ] ], b*c*a ] ]
gap> up := gfmq0[1];;
gap> um := gfmq0[2];;
gap> vp := gfmq0[3];;
gap> vm := gfmq0[4];;
gap> wp := gfmq0[5];;
gap> wm := gfmq0[6];;
gap> monrels := Concatenation( gprels, invrels );;
gap> id := One( monrels[1] );;
gap> r0 := List( monrels, r -> [ r, id ] );;
gap> w0 := up^5 * vp^5 * wp^5;
q0_M1^5*q0_M3^5*q0_M5^5
gap> w1 := OnePassReduceWord( w0, r0 );
q0_M1^2*q0_M3^3*q0_M5^3
gap> w2 := ReduceWordKB( w0, r0 );
q0_M1^2*q0_M3*q0_M5
gap> r1 := OnePassKB( mq0, r0 );;
gap> PrintLnUsingLabels( r1, gfmq0, q0labs );
[ [ B, b ], [ C, c ], [ a*A, id ], [ A*a, id ], [ b^2, id ], 
[ b*B, id ], [ B*b, id ], [ c^2, id ], [ c*C, id ], [ C*c, id ], 
[ a^2, A ], [ a^3, id ], [ a*b*a, b ], [ a*b*a, B ], [ b*a*b, A ], 
[ b*c*b, c ], [ b*c*b, C ], [ c*b*c, b ], [ c*b*c, B ], [ b*a*b, a^2 ], 
[ c*b*c, a*b*a ], [ (a*b)^2, id ], [ (b*c)^2, id ] ]
gap> Length( r1 );
23
gap> r2 := KnuthBendix( mq0, r1 );;
gap> PrintLnUsingLabels( r2, gfmq0, q0labs );
[ [ B, b ], [ C, c ], [ a*A, id ], [ A*a, id ], [ b^2, id ], 
[ c^2, id ], [ a^2, A ], [ A^2, a ], [ b*a, A*b ], [ b*A, a*b ], 
[ c*b, b*c ], [ c*a*b, b*c*A ], [ c*A*b, b*c*a ] ]
gap> Length( r2 );
13
gap> w2 := ReduceWordKB( w0, r2 );
q0_M2*q0_M3*q0_M5
gap> lw1 := LoggedReduceWordKB( w0, logrws );
[ [ [ 2, q0_M1^-5 ], [ 3, q0_M3^-3*q0_M1^-5 ], [ 1, <identity ...> ], 
      [ 2, q0_M1^-2 ], [ 3, q0_M3^-1*q0_M1^-2 ], [ 1, <identity ...> ] ], 
  q0_M2*q0_M3*q0_M5 ]
gap> p1 := PartialElementsOfMonoidPresentation( q0, 1 );;
gap> Length( p1 );
5
gap> PrintLnUsingLabels( p1, gfmq0, q0labs );
[ id, a, A, b, c ]
gap> p2 := PartialElementsOfMonoidPresentation( q0, 2 );;
gap> Length( p2 );
12
gap> PrintLnUsingLabels( p2, gfmq0, q0labs );
[ id, a, A, b, c, a*b, a*c, A*b, A*c, b*c, c*a, c*A ]
gap> T := GenerationTree( q0 );;
gap> lenT := Length( T );
22
gap> for i in [1..lenT/2] do 
>        PrintUsingLabels( T[i+i-1], gfmq0, q0labs );
>        Print( "   " );
>        PrintLnUsingLabels( T[i+i], gfmq0, q0labs );
>    od;
[ id, a ]   [ a, A ]
[ id, A ]   [ A, a ]
[ id, b ]   [ b, B ]
[ id, c ]   [ c, C ]
[ a, b ]   [ a*b, B ]
[ a, c ]   [ a*c, C ]
[ A, b ]   [ A*b, B ]
[ A, c ]   [ A*c, C ]
[ b, c ]   [ b*c, C ]
[ c, a ]   [ c*a, A ]
[ c, A ]   [ c*A, a ]
gap> seq0 := IdentityRelatorSequences( q0 );;
gap> Length( seq0 );
52
gap> idsq0 := IdentitiesAmongRelators( q0 );;
gap> Length( idsq0 );
15
gap> PrintLnUsingLabels( idsq0, gfmq0, q0labs );
[ [ [ -1, id ], [ 1, a ] ], [ [ -2, id ], [ 2, b ] ], [ [ -3, id ], 
[ 3, c ] ], [ [ -4, id ], [ 4, a*b ] ], [ [ -5, id ], [ 5, b*c ] ], 
[ [ -2, id ], [ 4, a ], [ -2, A*B*a*b*a ], [ 4, a^2*b*a ], 
[ -2, A*B*a^2*b*a ], [ 4, a^3*b*a ], [ -1, b*a ], [ -1, id ] ], 
[ [ 2, id ], [ -5, id ], [ 3, B*C*B ], [ 2, C*B ], [ 3, B ], 
[ -5, B ] ], [ [ -5, id ], [ 3, B*C*B ], [ 2, C*B ], [ 2, id ], 
[ -5, b ], [ 3, B*C ] ], [ [ -5, id ], [ 3, B*C*B ], [ -5, B*A*B*C*B ], 
[ 3, B*C*B^2*A*B*C*B ], [ 2, C*B^2*A*B*C*B ], [ 2, A*B*C*B ], 
[ -5, B ], [ 3, B*C*B^2 ], [ 2, C*B^2 ], [ 2, id ], [ 3, A*C ], 
[ -5, A*C ] ], [ [ -5, id ], [ 3, B*C*B ], [ 2, A*B*C*B ], 
[ -5, B ], [ 3, B*C*B^2 ], [ 2, C*B^2 ], [ 2, id ], [ -2, A*C ] ], 
[ [ -5, id ], [ 3, B*C*B ], [ 2, C*B ], [ -5, B ], [ 3, B*C*B^2 ], 
[ 2, C*B^2 ], [ 2, id ], [ -2, C ] ], [ [ 1, id ], [ -4, a ], 
[ 2, A*B ], [ -5, c ], [ 3, B*C*B*c ], [ 2, C*B*c ], [ 1, C*B*c ], 
[ -4, a*C*B*c ], [ 2, A*B*C*B*c ], [ -5, B*c ], [ 3, B*C*B^2*c ], 
[ 2, C*B^2*c ], [ 2, c ], [ -4, A ] ], [ [ -5, id ], [ 3, B*C*B ], 
[ 2, C*B ], [ -5, B ], [ 3, B*C*B^2 ], [ 4, a*C*B^2 ], [ 2, id ], 
[ -4, a*C ] ], [ [ -5, id ], [ 3, B*C*B ], [ 4, a*C*B ], [ -5, B ], 
[ 3, B*C*B^2 ], [ 2, C*B^2 ], [ 2, id ], [ -4, C ] ], [ [ -4, id ], 
[ 2, A*B*A ], [ -5, c*A ], [ 3, B*C*B*c*A ], [ 2, C*B*c*A ], 
[ -5, B*c*A ], [ 3, B*C*B^2*c*A ], [ 4, a*C*B^2*c*A ], [ 2, c*A ], 
[ -2, id ] ] ]

gap> SetInfoLevel( InfoIdRel, idrel_save_level );;

#############################################################################
##
#E  simsek.tst . . . . . . . . . . . . . . . . . . . . . . . . . .  ends here

[ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ]