Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/ibnp/tst/extras/   (GAP Algebra Version 4.15.1©)  Datei vom 11.8.2025 mit Größe 4 kB image not shown  

Quelle  reduce.tst   Sprache: unbekannt

 
Spracherkennung für: .tst vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

#############################################################################
##
#W  reduce.tst           GAP4 package IBNP       Gareth Evans & Chris Wensley
##

gap> START_TEST( "reduce.tst" );
gap> ibnp_infolevel_saved := InfoLevel( InfoIBNP );; 
gap> SetInfoLevel( InfoIBNP, 0 );; 

gap> A3 := Algebra3IBNP;;
gap> a:=A3.1;;  b:=A3.2;;  c:=A3.3;;
gap> ord := NCMonomialLeftLengthLexicographicOrdering( A3 );;

gap> NoncommutativeDivision := "RightOverlap";;

gap> L1 := [ 2*c^3 - 3*a*b, 2*b^3 - 3*c*a, 2*a^3 - 3*b*c ];
[ (-3)*a*b+(2)*c^3, (-3)*c*a+(2)*b^3, (-3)*b*c+(2)*a^3 ]
gap> L2 := List( L1, p -> GP2NP(p) );
[ [ [ [ 333 ], [ 12 ] ], [ 2, -3 ] ], 
  [ [ [ 222 ], [ 31 ] ], [ 2, -3 ] ], 
  [ [ [ 111 ], [ 23 ] ], [ 2, -3 ] ] ]
gap> PrintNPList( L2 );
 2c^3 - 3ab 
 2b^3 - 3ca 
 2a^3 - 3bc 

gap> drec := DivisionRecord( A3, L2, ord );
rec( div := "RightOverlap", 
  mvars := [ [ [ 12 ], [ 13 ], [ 23 ] ], 
      [ [ 1 .. 3 ], [ 1 .. 3 ], [ 1 .. 3 ] ] ], 
  polys := [ [ [ [ 333 ], [ 12 ] ], [ 2, -3 ] ], 
      [ [ [ 222 ], [ 31 ] ], [ 2, -3 ] ], 
      [ [ [ 111 ], [ 23 ] ], [ 2, -3 ] ] ] )

gap> p1 := 4*c^2*a^2*c^4*a^2*b^2 + 8*b^5*a^4 + 12*a^4*b^2*c^2;
(12)*a^4*b^2*c^2+(8)*b^5*a^4+(4)*c^2*a^2*c^4*a^2*b^2
gap> p2 := CleanNP( GP2NP(p1) );
[ [ [ 331133331122 ], [ 22222111\
1 ], 
      [ 11112233 ] ], [ 4812 ] ]

gap> q2 := LoggedIPolyReduceNP( A3, p2, drec, ord );
rec( 
  logs := [ [ [ 2, [ 3311 ], [ 31122 ] ] ], 
      [ [ 4, [  ], [ 221111 ] ], [ 9, [ 31 ], [ 31 ] ] ], 
      [ [ 3, [ 33 ], [ 231122 ] ], [ 6, [ 3122 ], [ 1 ] ], 
          [ 6, [  ], [ 12233 ] ] ] ], 
  polys := [ [ [ [ 333 ], [ 12 ] ], [ 2, -3 ] ], 
      [ [ [ 222 ], [ 31 ] ], [ 2, -3 ] ], 
      [ [ [ 111 ], [ 23 ] ], [ 2, -3 ] ] ], 
  result := 
    [ 
      [ [ 3323231122 ], [ 2312233 ], 
          [ 313131 ] ], [ 91827 ] ] )
gap> r2 := q2.result;;
gap> PrintNP( r2 );            
 9c^2bcbca^2b^2 + 18bcab^2c^2 + 27cacaca 

gap> ## check the logging information
gap> log1 := q2.logs[1];;
gap> pol1 := q2.polys[1];;
gap> add1 := [ ];;
gap> for i in [1..Length(log1)] do
>        Li := log1[i];;
>        if ( Li[2] <> [ ] ) then
>            p := MulNP( [ [ Li[2] ], [1] ], pol1 );
>        else
>            p := pol1;
>        fi;
>        if ( Li[3] <> [ ] ) then
>            p := MulNP( p, [ [ Li[3] ], [1] ] );
>        fi;
>        Add( add1, [ p[1], Li[1]*p[2] ] );
>    od;
gap> PrintNPList( add1 );
 4c^2a^2c^4a^2b^2 - 6c^2a^3bca^2b^2 
gap> log2 := q2.logs[2];;
gap> pol2 := q2.polys[2];;
gap> add2 := [ ];;
gap> for i in [1..Length(log2)] do
>        Li := log2[i];;
>        if ( Li[2] <> [ ] ) then
>            p := MulNP( [ [ Li[2] ], [1] ], pol2 );
>        else
>            p := pol2;
>        fi;
>        if ( Li[3] <> [ ] ) then
>            p := MulNP( p, [ [ Li[3] ], [1] ] );
>        fi;
>        Add( add2, [ p[1], Li[1]*p[2] ] );
>    od;
gap> PrintNPList( add2 );
 8b^5a^4 - 12cab^2a^4 
 18cab^3ca - 27cacaca 
gap> log3 := q2.logs[3];;
gap> pol3 := q2.polys[3];;
gap> add3 := [ ];;
gap> for i in [1..Length(log3)] do
>        Li := log3[i];;
>        if ( Li[2] <> [ ] ) then
>            p := MulNP( [ [ Li[2] ], [1] ], pol3 );
>        else
>            p := pol3;
>        fi;
>        if ( Li[3] <> [ ] ) then
>            p := MulNP( p, [ [ Li[3] ], [1] ] );
>        fi;
>        Add( add3, [ p[1], Li[1]*p[2] ] );
>    od;
gap> PrintNPList( add3 );
 6c^2a^3bca^2b^2 - 9c^2bcbca^2b^2 
 12cab^2a^4 - 18cab^3ca 
 12a^4b^2c^2 - 18bcab^2c^2 
gap> ## these 6 terms have been added to the original p2 to make r2
gap> ## so subtract them from the result r2 to get back to p2
gap> r1 := AddNP( r2, add1[1], 11 );;
gap> r1 := AddNP( r1, add2[1], 11 );;
gap> r1 := AddNP( r1, add2[2], 11 );;
gap> r1 := AddNP( r1, add3[1], 11 );;
gap> r1 := AddNP( r1, add3[2], 11 );;
gap> r1 := AddNP( r1, add3[3], 11 );;
gap> PrintNP( r1 );
 4c^2a^2c^4a^2b^2 + 8b^5a^4 + 12a^4b^2c^2 
gap> r1 = p2;
true

gap> ## the above calculation can be done more simply by:
gap> VerifyLoggedRecordNP( p2, q2 );
true

gap> SetInfoLevel( InfoIBNP, ibnp_infolevel_saved );; 
gap> STOP_TEST( "reduce.tst", 10000 );

#############################################################################
##
#E  reduce.tst . . . . . . . . . . . . . . . . . . . . . . . . . . ends here

[Dauer der Verarbeitung: 0.15 Sekunden, vorverarbeitet 2026-06-18]