Changeset c4002e in git


Ignore:
Timestamp:
May 13, 2007, 8:29:43 PM (17 years ago)
Author:
Viktor Levandovskyy <levandov@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
4fff0027b707c4e4fe290c3f5857fd4ed645a171
Parents:
2dc99111cab6d0595e71ef5fbcff7ef4e101378b
Message:
*levandov: right-sided std,syz, nf and modulo added


git-svn-id: file:///usr/local/Singular/svn/trunk@10038 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/nctools.lib

    r2dc9911 rc4002e  
    11///////////////////////////////////////////////////////////////////////////////
    2 version="$Id: nctools.lib,v 1.24 2007-02-24 15:15:26 Singular Exp $";
     2version="$Id: nctools.lib,v 1.25 2007-05-13 18:29:43 levandov Exp $";
    33category="Noncommutative";
    44info="
     
    66AUTHORS:   Levandovskyy V.,     levandov@mathematik.uni-kl.de,
    77@*         Lobillo, F.J.,       jlobillo@ugr.es,
    8 @*           Rabelo, C.,          crabelo@ugr.es.
     8@*         Rabelo, C.,          crabelo@ugr.es.
    99
    1010SUPPORT: DFG (Deutsche Forschungsgesellschaft) and Metodos algebraicos y efectivos en grupos cuanticos, BFM2001-3141, MCYT, Jose Gomez-Torrecillas (Main researcher).
     
    3636LIB "poly.lib"; // for newtonDiag
    3737LIB "general.lib"; // for sort
     38// LIB "ncalg.lib";
    3839
    3940///////////////////////////////////////////////////////////////////////////////
     
    12041205
    12051206
    1206 proc rightStd(ideal I)
    1207 "USAGE:  rightStd(I); I an ideal
     1207proc rightStd(def I)
     1208"USAGE:  rightStd(I); I an ideal/ module
    12081209PURPOSE: compute a right Groebner basis of I
    1209 RETURN:  ideal
     1210RETURN:  the same type as input
    12101211EXAMPLE: example rightStd; shows examples
    12111212"
     
    12141215  def Aopp = opposite(A);
    12151216  setring Aopp;
    1216   ideal Iopp = oppose(A,I);
    1217   ideal Jopp = std(Iopp);
     1217  def Iopp = oppose(A,I);
     1218  def Jopp = groebner(Iopp);
    12181219  setring A;
    1219   ideal J = oppose(Aopp,Jopp);
     1220  def J = oppose(Aopp,Jopp);
    12201221  return(J);
    12211222}
     
    12331234  RI;
    12341235}
     1236
     1237
     1238proc rightSyz(def I)
     1239"USAGE:  rightSyz(I); I an ideal/ module
     1240PURPOSE: compute a right syzygy module of I
     1241RETURN:  the same type as input
     1242EXAMPLE: example rightSyz; shows examples
     1243"
     1244{
     1245  def A = basering;
     1246  def Aopp = opposite(A);
     1247  setring Aopp;
     1248  def Iopp = oppose(A,I);
     1249  def Jopp = syz(Iopp);
     1250  setring A;
     1251  def J = oppose(Aopp,Jopp);
     1252  return(J);
     1253}
     1254example
     1255{ "EXAMPLE:"; echo = 2;
     1256  ring r = 0,(x,d),dp;
     1257  ncalgebra(1,1); // the first Weyl algebra
     1258  ideal I = x,d;
     1259  module LS = syz(I);
     1260  print(LS);
     1261  module RS = rightSyz(I);
     1262  print(RS);
     1263}
     1264
     1265
     1266proc rightNF(def v, def M)
     1267"USAGE:  rightNF(I); v a poly/vector, M an ideal/module
     1268PURPOSE: compute a right normal form of v w.r.t. M
     1269RETURN:  poly/vector (as of the 1st argument)
     1270EXAMPLE: example rightNF; shows examples
     1271"
     1272{
     1273  def A = basering;
     1274  def Aopp = opposite(A);
     1275  setring Aopp;
     1276  def vopp = oppose(A,v);
     1277  def Mopp = oppose(A,M);
     1278  Mopp = std(Mopp);
     1279  def wopp = NF(vopp,Mopp);
     1280  setring A;
     1281  def w    = oppose(Aopp,wopp);
     1282  w = simplify(w,2); // skip zeros in ideal/module
     1283  return(w);
     1284}
     1285example
     1286{ "EXAMPLE:"; echo = 2;
     1287  LIB "ncalg.lib";
     1288  ring r = 0,(x,d),dp;
     1289  ncalgebra(1,1); // Weyl algebra
     1290  ideal I = x; I = std(I);
     1291  poly  p = x*d+1;
     1292  NF(p,I); // left normal form
     1293  rightNF(p,I); // right normal form
     1294}
     1295
     1296// **********************************
     1297// * NF: Example for vector/module: *
     1298// **********************************
     1299// module M = [x,0],[0,d]; M = std(M);
     1300// vector v = (x*d+1)*[1,1];
     1301// print(NF(v,M));
     1302// print(rightNF(v,M));
     1303
     1304proc rightModulo(def M, def N)
     1305"USAGE:  rightModulo(M,N); M,N are ideals/modules
     1306PURPOSE: compute a right representation of the module (M+N)/N
     1307RETURN:  module
     1308ASSUME:  M,N are presentation matrices for right modules
     1309EXAMPLE: example rightModulo; shows examples
     1310"
     1311{
     1312  def A = basering;
     1313  def Aopp = opposite(A);
     1314  setring Aopp;
     1315  def Mopp = oppose(A,M);
     1316  def Nopp = oppose(A,N);
     1317  def Kopp = modulo(Mopp,Nopp);
     1318  setring A;
     1319  def K = oppose(Aopp,Kopp);
     1320  return(K);
     1321}
     1322example
     1323{ "EXAMPLE:"; echo = 2;
     1324  LIB "ncalg.lib";
     1325  def A = makeUsl(2);
     1326  setring A;
     1327  option(redSB);
     1328  option(redTail);
     1329  ideal I = e2,f2,h2-1;
     1330  I = twostd(I);
     1331  print(matrix(I));
     1332  ideal E  = std(e);
     1333  ideal TL = e,h-1; // the result of left modulo
     1334  TL;
     1335  ideal T = rightModulo(E,I);
     1336  T = rightStd(T+I);
     1337  T = rightStd(rightNF(T,I)); // make the output canonic
     1338  T;
     1339}
     1340
    12351341//////////////////////////////////////////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.