Changeset 065ddc in git
- Timestamp:
- May 10, 2005, 7:31:26 PM (19 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 21119d12f3dba9a59dfbf58b2aed95d9a75eb219
- Parents:
- 8bfb2f17fa39d7754b72530738b0e49025d026dc
- Location:
- Singular/LIB
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/center.lib
r8bfb2f1 r065ddc 1 1 /////////////////////////////////////////////////////////////////////////////// 2 version="$Id: center.lib,v 1.1 4 2005-05-06 14:38:08 hannesExp $";2 version="$Id: center.lib,v 1.15 2005-05-10 17:31:08 levandov Exp $"; 3 3 category="Noncommutative"; 4 4 info=" 5 LIBRARY: center.lib computation of central elements of G-algebras and Q-algebras.5 LIBRARY: center.lib computation of central elements of G-algebras and their factor-algebras. 6 6 AUTHOR: Oleksandr Motsak, motsak@mathematik.uni-kl.de. 7 7 OVERVIEW: … … 9 9 Implementation is based on algorithms, written in the frame of the diploma thesis by O. Motsak (advisor: Prof. S.A. Ovsienko, support: V. Levandovskyy), at Kyiv Taras Shevchenko University (Ukraine) with the title 'An algorithm for the computation of the center of noncommutative polynomial algebra'. 10 10 11 SUPPORT: Forschungsschwerpunkt 'Mathematik und Praxis' 11 SUPPORT: Forschungsschwerpunkt 'Mathematik und Praxis', University of Kaiserslautern 12 12 13 13 PROCEDURES: … … 288 288 if( defined( @@@SORTEDVARARRAY ) ) 289 289 { 290 kill ( @@@SORTEDVARARRAY );290 kill @@@SORTEDVARARRAY; 291 291 }; 292 292 … … 331 331 if( defined( @@@SORTEDVARARRAY ) ) 332 332 { 333 kill ( @@@SORTEDVARARRAY );333 kill @@@SORTEDVARARRAY; 334 334 }; 335 335 }; … … 366 366 if( defined(@@@MY_QIDEAL) ) 367 367 { 368 kill (@@@MY_QIDEAL);368 kill @@@MY_QIDEAL; 369 369 }; 370 370 … … 386 386 if( defined(@@@MY_QIDEAL) ) 387 387 { 388 kill (@@@MY_QIDEAL);388 kill @@@MY_QIDEAL; 389 389 }; 390 390 }; … … 1904 1904 { 1905 1905 setring(save); 1906 kill (NewRingWithGoodField);1906 kill NewRingWithGoodField; 1907 1907 }; 1908 1908 … … 2468 2468 /******************************************************/ 2469 2469 proc inCenter( def a ) 2470 "USAGE: inCenter(a); a poly/list/ideal 2471 RETURN: integer (1 if a in the center, 0 otherwise) 2472 EXAMPLE: example inCenter; shows examples" 2473 { 2470 "USAGE: inCenter(a); a poly/list/ideal 2471 RETURN: integer, 1 if a in the center, 0 otherwise 2472 PURPOSE: check whether a given element is central 2473 EXAMPLE: example inCenter; shows examples 2474 "{ 2474 2475 QNF_init(); 2475 2476 def res; … … 2515 2516 proc inCentralizer( def a, poly f ) 2516 2517 "USAGE: inCentralizer(a, f); a poly/list/ideal, f poly 2517 RETURN: integer (1 if a in the centralizer(f), 0 otherwise) 2518 EXAMPLE: example inCentralizer; shows examples" 2519 { 2518 RETURN: integer, 1 if a in the centralizer(f), 0 otherwise 2519 PURPOSE: check whether a given element is centralizing with respect to f 2520 EXAMPLE: example inCentralizer; shows examples 2521 "{ 2520 2522 QNF_init(); 2521 2523 def res; … … 2546 2548 ncalgebra(1,D); // the Heisenberg algebra 2547 2549 poly f = x^2; 2548 poly a = z; // lies in center2550 poly a = z; // we know this element if central 2549 2551 poly b = y^2; 2550 2552 inCentralizer(a, f); … … 2559 2561 proc center(int MaxDeg, list # ) 2560 2562 "USAGE: center(MaxDeg[, N]); int MaxDeg, int N 2561 RETURN: ideal generated by found elements 2562 NOTE: computes the 'minimal' set of central elements. 2563 Since in general algorithms knows nothing about the number and degrees of 2564 desired polynomials one have to specify any kind of termination condition: 2565 1. MaxDeg - maximal degree of desired elements or/and 2566 2. n - the minimal number of desired elements to find. 2563 RETURN: ideal, generated by elements of degree at most MaxDeg 2564 PURPOSE: computes a minimal set of central elements up to degree MaxDeg. 2565 NOTE: In general, one cannot predict the number or the heighest degree of 2566 central elements. Hence, one has to specify a termination condition via arguments MaxDeg and/or N. 2567 @* If MaxDeg is positive, the computation stops after all central elements of degree at most MaxDeg has been found. 2568 @* If MaxDeg is negative, the termination is determined by N only. 2569 @* If N is given, the computation stops if at least N central elements has been found. 2570 @* Warning: if N is given and bigger than the real number of generators, the procedure may not terminate. 2567 2571 SEE ALSO: centralizer; inCenter 2568 2572 EXAMPLE: example center; shows an example 2569 " 2570 { 2573 "{ 2571 2574 if ( myInt(#) > 0 ) // given a number of central elements to compute 2572 2575 { … … 2582 2585 print( "Error: wrong arguments." ); 2583 2586 return(); 2584 2585 2587 } 2586 2588 example 2587 2589 { "EXAMPLE:"; echo = 2; 2588 ring a=0,(x,y,z),dp; 2589 matrix D[3][3]=0; 2590 D[1,2]=-z; 2591 D[1,3]=2*x; 2592 D[2,3]=-2*y; 2593 ncalgebra(1,D); // this is U(sl_2) 2594 ideal Z = center(2); // find all central elements of degree <= 2 2595 Z; 2596 inCenter(Z); 2597 ideal ZZ = center(-1, 1 ); // find the first non trivial central element 2598 ZZ; ""; 2599 inCenter(ZZ); 2590 ring A = 0,(x,y,z,t),dp; 2591 matrix D[4][4]=0; 2592 D[1,2]=-z; D[1,3]=2*x; D[2,3]=-2*y; 2593 ncalgebra(1,D); // this algebra is U(sl_2) tensored with K[t] 2594 ideal Z = center(3); // find all central elements of degree <= 3 2595 Z; 2596 inCenter(Z); 2597 ideal ZZ = center(-1, 1); // find one central element of the lowest degree 2598 ZZ; 2599 inCenter(ZZ); 2600 2600 }; 2601 2601 … … 2604 2604 proc centralizer( poly p, int MaxDeg, list # ) 2605 2605 "USAGE: centralizer(F, MaxDeg[, N]); poly F, int MaxDeg, int N 2606 RETURN: ideal generated by found elements 2607 NOTE: computes the 'minimal' set of elements of centralizer(F). 2608 Since in general algorithms knows nothing about the number and degrees of 2609 desired polynomials one have to specify any kind of termination condition: 2610 1. MaxDeg - maximal degree of desired elements or/and 2611 2. n - the minimal number of desired elements to find. 2606 RETURN: ideal, generated by elements of degree <= MaxDeg 2607 PURPOSE: computes a minimal set of elements centralizer(F) up to degree MaxDeg. 2608 NOTE: In general, one cannot predict the number or the heighest degree of 2609 centralizing elements. Hence, one has to specify a termination condition via arguments MaxDeg and/or N. 2610 @* If MaxDeg is positive, the computation stops after all centralizing elements of degree at most MaxDeg has been found. 2611 @* If MaxDeg is negative, the termination is determined by N only. 2612 @* If N is given, the computation stops if at least N centralizing elements has been found. 2613 @* Warning: if N is given and bigger than the real number of generators, the procedure may not terminate. 2612 2614 SEE ALSO: center; inCentralizer 2613 EXAMPLE: example centralizer; shows an example "2614 {2615 EXAMPLE: example centralizer; shows an example 2616 "{ 2615 2617 2616 2618 if( myInt(#) > 0 ) … … 2631 2633 example 2632 2634 { "EXAMPLE:"; echo = 2; 2633 ring a=0,(x,y,z),dp;2635 ring A = 0,(x,y,z),dp; 2634 2636 matrix D[3][3]=0; 2635 D[1,2]=-z; 2636 D[1,3]=2*x; 2637 D[2,3]=-2*y; 2638 ncalgebra(1,D); // this is U(sl_2) 2639 poly f = 4*x*y+z^2-2*z; // central polynomial 2637 D[1,2]=-z; D[1,3]=2*x; D[2,3]=-2*y; 2638 ncalgebra(1,D); // this algebra is U(sl_2) 2639 poly f = 4*x*y+z^2-2*z; // a central polynomial 2640 2640 f; 2641 ideal c = centralizer(f, 2); // find all elements of degree <= 2 which lies in centralizer of f 2642 c; 2641 ideal c = centralizer(f, 2); // find all elements of the centralizer of f 2642 // of degree <= 2 2643 c; // since f is central, the answer consists of generators of A 2643 2644 inCentralizer(c, f); 2644 ideal cc = centralizer(f, -1, 2 ); // find at least first two non trivialelements of the centralizer of f2645 ideal cc = centralizer(f,-1,2); // find at least two elements of the centralizer of f 2645 2646 cc; 2646 2647 inCentralizer(cc, f); 2647 poly g = z^2-2*z; // anypolynomial2648 g; "";2649 c = centralizer(g, 2); // find all elements of degree <= 2 which lies in centralizer of g2650 c; "";2648 poly g = z^2-2*z; // some non-central polynomial 2649 c = centralizer(g, 2); // find all elements of the centralizer of g 2650 // of degree <= 2 2651 c; 2651 2652 inCentralizer(c, g); 2652 cc = centralizer(g, -1, 2 ); // find at least first two non trivial elements of the centralizer of g 2653 cc; ""; 2653 centralizer(g,-1,1); // find the element of the lowest degree in the centralizer 2654 cc = centralizer(g,-1,2); // find at least two elements of the centralizer of g 2655 cc; 2654 2656 inCentralizer(cc, g); 2655 2657 }; -
Singular/LIB/involut.lib
r8bfb2f1 r065ddc 1 version="$Id: involut.lib,v 1. 4 2005-05-06 14:38:40 hannesExp $";1 version="$Id: involut.lib,v 1.5 2005-05-10 17:31:26 levandov Exp $"; 2 2 category="Noncommutative"; 3 3 info=" … … 7 7 @* Viktor Levandovskyy, levandov@mathematik.uni-kl.de 8 8 9 THEORY: Involution is an antiisomorphism of a noncommutative algebra with the 10 property that applied an involution twice, one gets an identity. Involution is linear with respect to the ground field. In this library we compute linear involutions, distinguishing the case of a diagonal matrix (such involutions are called homothetic) and a general one. 11 9 12 SUPPORT: Forschungsschwerpunkt 'Mathematik und Praxis' (Project of Dr. E. Zerz 10 13 and V. Levandovskyy), Uni Kaiserslautern … … 17 20 find_invo_diag(); describes a variety of homothetic (diagonal) involutions on a basering; 18 21 find_auto(); describes a variety of linear automorphisms of a basering; 19 ncdetection( ring r); computes an ideal, presenting an involution map on some particular noncommutative algebras;22 ncdetection(); computes an ideal, presenting an involution map on some particular noncommutative algebras; 20 23 involution(m, map theta); applies the involution to an object. 21 24 "; … … 25 28 LIB "primdec.lib"; 26 29 /////////////////////////////////////////////////////////////////////////////// 27 proc ncdetection( def r)28 "USAGE: ncdetection( r), r a ring29 PURPOSE: compute optimized involutions for some particular noncommutative algebras 30 RETURN: ideal (presenting an involution map) 31 NOTE: the procedure is aimed at noncommutative algebras with differential, shift or advance operators arising in the Control Theory 30 proc ncdetection() 31 "USAGE: ncdetection(); 32 RETURN: ideal, representing an involution map 33 PURPOSE: compute classical involutions (i.e. acting rather on operators than on variables) for some particular noncommutative algebras 34 ASSUME: the procedure is aimed at noncommutative algebras with differential, shift or advance operators arising in Control Theory. It has to be executed in the ring. 32 35 EXAMPLE: example ncdetection; shows an example 33 36 "{ … … 37 40 // der differential-, shift- oder advance-operatoren enthaelt mit denen die i-te 38 41 // variable nicht kommutiert. 42 if ( nameof(basering)=="basering" ) 43 { 44 "No current ring defined."; 45 return(ideal(0)); 46 } 47 def r = basering; 48 setring r; 39 49 int i,j,k,LExp; 40 50 int NVars = nvars(r); … … 155 165 D[1,4]=1; D[2,5]=1; D[3,6]=1; 156 166 ncalgebra(1,D); 157 ncdetection( r);167 ncdetection(); 158 168 kill r; 159 169 //---------------------------------------- 160 170 ring r=0,(x,S),dp; 161 171 ncalgebra(1,-S); 162 ncdetection( r);172 ncdetection(); 163 173 kill r; 164 174 //---------------------------------------- … … 167 177 D[1,2]=1; D[1,3]=-S; 168 178 ncalgebra(1,D); 169 ncdetection( r);179 ncdetection(); 170 180 } 171 181 … … 267 277 proc involution(m, map theta) 268 278 "USAGE: involution(m, theta); m is a poly/vector/ideal/matrix/module, theta is a map 269 PURPOSE: applies the involution, presented by theta to the input m270 279 RETURN: object of the same type as m 280 PURPOSE: applies the involution, presented by theta to the object m 281 THEORY: for an involution theta and two polynomials a,b from the algebra, theta(ab) = theta(b) theta(a); theta is linear with respect to the ground field 271 282 EXAMPLE: example involution; shows an example 272 283 "{ … … 405 416 proc find_invo() 406 417 "USAGE: find_invo(); 407 PURPOSE: describes a variety of linear involutions on a basering 408 RETURN: a ring together with a list of pairs L, where 418 RETURN: a ring containing a list L of pairs, where 409 419 @* L[i][1] = Groebner Basis of an i-th associated prime, 410 420 @* L[i][2] = matrix, defining a linear map, with entries, reduced with respect to L[i][1] 421 422 PURPOSE: computed the ideal of linear involutions of the basering 423 411 424 NOTE: for convenience, the full ideal of relations @code{idJ} 412 425 and the initial matrix with indeterminates @code{matD} are exported in the output ring. 426 EXAMPLE: example find_invo; shows examples 427 SEE ALSO: find_invo_diag, involution 413 428 "{ 414 429 def @B = basering; //save the name of basering … … 529 544 proc find_invo_diag() 530 545 "USAGE: find_invo_diag(); 531 PURPOSE: describes a variety of homothetic (diagonal) involutions on a basering532 546 RETURN: a ring together with a list of pairs L, where 533 547 @* L[i][1] = Groebner Basis of an i-th associated prime, 534 548 @* L[i][2] = matrix, defining a linear map, with entries, reduced with respect to L[i][1] 549 550 PURPOSE: compute the ideal of homothetic (diagonal) involutions of the basering 551 535 552 NOTE: for convenience, the full ideal of relations @code{idJ} 536 553 and the initial matrix with indeterminates @code{matD} are exported in the output ring. 554 EXAMPLE: example find_invo_diag; shows examples 555 SEE ALSO: find_invo, involution 537 556 "{ 538 557 def @B = basering; //save the name of basering … … 654 673 proc find_auto() 655 674 "USAGE: find_auto(); 656 PURPOSE: describes a variety of linear automorphisms of a basering657 675 RETURN: a ring together with a list of pairs L, where 658 676 @* L[i][1] = Groebner Basis of an i-th associated prime, 659 677 @* L[i][2] = matrix, defining a linear map, with entries, reduced with respect to L[i][1] 678 679 PURPOSE: computes the ideal of linear automorphisms of the basering 680 660 681 NOTE: for convenience, the full ideal of relations @code{idJ} 661 682 and the initial matrix with indeterminates @code{matD} are exported in the output ring. 683 EXAMPLE: example find_auto; shows examples 684 SEE ALSO: find_invo 662 685 "{ 663 686 def @B = basering; //save the name of basering -
Singular/LIB/nctools.lib
r8bfb2f1 r065ddc 1 1 /////////////////////////////////////////////////////////////////////////////// 2 version="$Id: nctools.lib,v 1.1 2 2005-05-06 14:38:50 hannesExp $";2 version="$Id: nctools.lib,v 1.13 2005-05-10 17:31:08 levandov Exp $"; 3 3 category="Noncommutative"; 4 4 info=" … … 22 22 23 23 AUXILIARY PROCEDURES: 24 Newton(f); 25 NCRelations(r); 26 IsCentral(p,[v]); check for the commutativity of a polynomial in the G-algebra,27 Is_NC();checks whether basering is noncommutative,24 Newton(f); Newton diagram of a polynomial, 25 NCRelations(r); recovers the non-commutative relations of a G-algebra, 26 isCentral(p,[v]); check for the commutativity of a polynomial in the G-algebra, 27 isNC(); checks whether basering is noncommutative, 28 28 UpOneMatrix(N); returns NxN matrix with 1's in the whole upper triagle, 29 29 30 30 ALIAS PROCEDURES: 31 wRing(r); 31 wRing(r); alias to weightedRing, 32 32 "; 33 33 … … 185 185 "EXAMPLE:";echo=2; 186 186 LIB "qmatrix.lib"; 187 def r =quant(2); // generate quant(2)and store it in r187 def r = quantMat(2); // generate quantum matrix of order 2 and store it in r 188 188 setring r; // set the ring r the active ring 189 189 r; … … 503 503 /////////////////////////////////////////////////////////////////////////////// 504 504 505 proc IsCentral(poly p, list #)506 "USAGE: IsCentral(p,[v]); p poly, v an integer (with v!=0, procedure will be verbose)505 proc isCentral(poly p, list #) 506 "USAGE: isCentral(p,[v]); p poly, v an integer (with v!=0, procedure will be verbose) 507 507 PURPOSE: check whether p is central in a basering (that is, commutes with everything) 508 508 RETURN: integer (1, if p commutes with all variables, 0 otherwise) 509 EXAMPLE: example IsCentral; shows examples509 EXAMPLE: example isCentral; shows examples 510 510 "{ 511 511 int N = nvars(basering); … … 537 537 ncalgebra(1,D); // this is U(sl_2) 538 538 poly c = 4*x*y+z^2-2*z; 539 IsCentral(c,0);539 isCentral(c,0); 540 540 poly h = x*c; 541 IsCentral(h,1);541 isCentral(h,1); 542 542 } 543 543 … … 910 910 ////////////////////////////////////////////////////////////////////// 911 911 912 proc Is_NC()913 "USAGE: Is_NC();912 proc isNC() 913 "USAGE: isNC(); 914 914 PURPOSE: check whether a basering is commutative or not 915 915 RETURN: int (1, if basering is noncommutative; 0 otherwise) 916 EXAMPLE: example Is_NC; shows examples916 EXAMPLE: example isNC; shows examples 917 917 "{ 918 918 string rname=nameof(basering); … … 939 939 def a = CreateWeyl(2); 940 940 setring a; 941 Is_NC();941 isNC(); 942 942 kill a; 943 943 ring r = 17,(x(1..7)),dp; 944 Is_NC();944 isNC(); 945 945 kill r; 946 946 }
Note: See TracChangeset
for help on using the changeset viewer.