[BACK]Return to complex.sm1 CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / Doc

Diff for /OpenXM/src/kan96xx/Doc/complex.sm1 between version 1.2 and 1.8

version 1.2, 2000/03/23 11:54:08 version 1.8, 2002/08/11 08:39:50
Line 1 
Line 1 
 % $OpenXM$  % $OpenXM: OpenXM/src/kan96xx/Doc/complex.sm1,v 1.7 2001/11/26 01:25:44 takayama Exp $
 %% lib/complex.sm1  [ functions for complex ], 1999, 9/9  %% lib/complex.sm1  [ functions for complex ], 1999, 9/9
 %% cf.  yama:1999/Int/uli.sm1  %% cf.  yama:1999/Int/uli.sm1
 %%%%%%%%%%%%%%%%%%%   commands %%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%   commands %%%%%%%%%%%%%%%%%%%%%%%%%
 %%%  res-div, res-solv, res-kernel-image, res-dual  %%%  res-div, res-solv, res-kernel-image, res-dual
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 [(complex.sm1 : 1999, 9/28, res-div, res-solv, res-kernel-image, res-dual )  [(complex.sm1 : 1999, 9/28, res-div, res-solv, res-kernel-image, res-dual )
    (              2000, 6/8,  isExact_h, isExact )
  (In this package, complex is expressed in terms of matrices.)   (In this package, complex is expressed in terms of matrices.)
 ] {message} map  ] {message-quiet} map
 /uli.verbose 0 def  /uli.verbose 0 def
 /uli.weight [(x) -1 (y) -1 (Dx) 1 (Dy) 1] def  /uli.weight [(x) -1 (y) -1 (Dx) 1 (Dy) 1] def
   
Line 266 
Line 267 
 %% [M d] res-solv c'/r  ;   M : matrix,  d, c' : vectors, r : scalar, c'/r =c  %% [M d] res-solv c'/r  ;   M : matrix,  d, c' : vectors, r : scalar, c'/r =c
 /res-solv {  /res-solv {
   /arg1 set    /arg1 set
   [/in-res-solv /M /d /ans /B /vv /G /rr /rng] pushVariables    [/in-res-solv /M /d /ans /B /vv /G /rr /rng /nn] pushVariables
   [(CurrentRingp) (KanGBmessage)] pushEnv    [(CurrentRingp) (KanGBmessage)] pushEnv
   [    [
        /nn arg1 length def
      /M arg1  0 get def       /M arg1  0 get def
      /d arg1  1 get def       /d arg1  1 get def
      M getRing /rng set       nn 3 eq {
          /rng arg1 2 get def
        }{
          M getRing /rng set
          rng tag RingP eq {  }
          { d getRing /rng set } ifelse
        }ifelse
      rng res-getx /vv set       rng res-getx /vv set
      uli.verbose { (res-solv : vv = ) messagen vv message } { } ifelse       uli.verbose { (res-solv : vv = ) messagen vv message } { } ifelse
      uli.verbose { } { [(KanGBmessage) 0] system_variable } ifelse       uli.verbose { } { [(KanGBmessage) 0] system_variable } ifelse
Line 317 
Line 325 
  (Note that M and d are not treated as an element of the homogenized Weyl)   (Note that M and d are not treated as an element of the homogenized Weyl)
  (algebra. If M or d contains the homogenization variable h, it automatically)   (algebra. If M or d contains the homogenization variable h, it automatically)
  (set to 1. If you need to use h, use the command res-solv-h)   (set to 1. If you need to use h, use the command res-solv-h)
    $[M d rng] res-solv [c' r] $
    $ rng is a ring object. $
    $ res-solv extracts variables names from rng, but defines a new ring. $
  $Example 1:  [(x,y) ring_of_differential_operators [[(x) -1 (Dx) 1]] weight_vector 0] $   $Example 1:  [(x,y) ring_of_differential_operators [[(x) -1 (Dx) 1]] weight_vector 0] $
  $              define_ring $   $              define_ring $
  $ [ [ [(x Dx + 2).] [ (Dx (x Dx + 3) - (x Dx + 2) (x Dx -4)).]]   [(1).]] $   $ [ [ [(x Dx + 2).] [ (Dx (x Dx + 3) - (x Dx + 2) (x Dx -4)).]]   [(1).]] $
Line 358 
Line 369 
 %% M : matrix,  d, c' : vectors, r : scalar, c'/r =c  %% M : matrix,  d, c' : vectors, r : scalar, c'/r =c
 /res-solv-h {  /res-solv-h {
   /arg1 set    /arg1 set
   [/in-res-solv-h /M /d /ans /B /vv /G /rr /rng] pushVariables    [/in-res-solv-h /M /d /ans /B /vv /G /rr /rng /nn] pushVariables
   [(CurrentRingp) (KanGBmessage)] pushEnv    [(CurrentRingp) (KanGBmessage)] pushEnv
   [    [
        /nn arg1 length def
      /M arg1  0 get def       /M arg1  0 get def
      /d arg1  1 get def       /d arg1  1 get def
      M getRing /rng set       nn 3 eq {
          /rng arg1 2 get def
        }{
          M getRing /rng set
          rng tag RingP eq {  }
          { d getRing /rng set } ifelse
        }ifelse
      rng res-getx /vv set       rng res-getx /vv set
      uli.verbose { (res-solv-h : vv = ) messagen vv message } { } ifelse       uli.verbose { (res-solv-h : vv = ) messagen vv message } { } ifelse
      uli.verbose { } { [(KanGBmessage) 0] system_variable } ifelse       uli.verbose { } { [(KanGBmessage) 0] system_variable } ifelse
Line 791 
Line 809 
   
 [(intersection)  [(intersection)
 [(Ideal intersections in the ring of differential operators.)  [(Ideal intersections in the ring of differential operators.)
    ([ I1 I2 V-list ] intersection  : I1 and I2 are ideals, and V-list)
    (is a list of variables.  It returns the ideal intersection of I1 and I2.)
    (Intersection is computed in the ring of differential operators.)
  $Example 1: [[[(x1) (x2)] [(x2) (x4)] (x1,x2,x3,x4)] intersection$   $Example 1: [[[(x1) (x2)] [(x2) (x4)] (x1,x2,x3,x4)] intersection$
  $             [(x2) (x4^2)] (x1,x2,x3,x4)] intersection :: $   $             [(x2) (x4^2)] (x1,x2,x3,x4)] intersection :: $
  $Example 2: [[[(x1) (x2)] [(x2) (x4)] (x1,x2,x3,x4)] intersection$   $Example 2: [[[(x1) (x2)] [(x2) (x4)] (x1,x2,x3,x4)] intersection$
Line 861 
Line 882 
     /vlist ff 2 get  def      /vlist ff 2 get  def
     /mm slist length def      /mm slist length def
   
       vlist tag ArrayP eq {
         vlist { toString } map from_records /vlist set
       } {  } ifelse
     [vlist to_records pop] [(_z) (_y)] join /vlist2 set      [vlist to_records pop] [(_z) (_y)] join /vlist2 set
     [vlist2 from_records ring_of_polynomials      [vlist2 from_records ring_of_polynomials
      [[(_z) 1 (_y) 1]] weight_vector       [[(_z) 1 (_y) 1]] weight_vector
Line 902 
Line 926 
  $                     [[(y1) 1 (y2) 1 (y3) 1 (y4) 1]]] pgb $   $                     [[(y1) 1 (y2) 1 (y3) 1 (y4) 1]]] pgb $
  $            0 get [(y1) (y2) (y3) (y4)] eliminatev ::$   $            0 get [(y1) (y2) (y3) (y4)] eliminatev ::$
  $Example 2: [[(x2^2) (x2 x4) (x2) (x4^2)] [(x2) (x4)] (x2,x4)] saturation$   $Example 2: [[(x2^2) (x2 x4) (x2) (x4^2)] [(x2) (x4)] (x2,x4)] saturation$
   ]] putUsages
   
   
   %% 2000, 6/8,  at Fernando Colon, 319,  Sevilla
   
   
   /isExact.verbose 1 def  %% should be changed to gb.verbose
   /isExact_h {
     /arg1 set
     [/in-isExact_h  /vv /comp /i /j /n /kernel.i /ans] pushVariables
     [
       /comp arg1 0 get def
       /vv arg1 1 get def
       /n comp length def
       /ans 1 def
       0 1 n 2 sub {
         /i set
         /j i 1 add def
         isExact.verbose { (Checking ker ) messagen i messagen ( = im of ) messagen
                        j message } {   } ifelse
         [comp i get vv] syz_h 0 get /kernel.i set
         [ kernel.i comp j get vv] isSameIdeal_h /ans set
         ans 0 eq {
           (image != kernel at ) messagen i messagen ( and ) messagen j message
            /LLL.isExact_h goto
         } {  } ifelse
         isExact.verbose { (OK) message } {  } ifelse
       } for
       /LLL.isExact_h
       /arg1 ans def
     ] pop
     popVariables
     arg1
   } def
   
   [(isExact_h)
   [( complex isExact_h bool )
    (It returns 1 when the given complex is exact. All computations are done)
    (in D<h>, the ring of homogenized differential operators.)
    (cf. syz_h, isSameIdeal_h )
    $Example1: [ [[1 2 3]] [0]] gkz /ff set $
    $         [ff 0 get (x1,x2,x3) [[(x2) -1 (Dx2) 1]]] resol1 /gg set $
    $         [gg (x1,x2,x3)] isExact_h :: $
    $         gg 1 get 0 get /pp set $
    $         gg [1 1] pp put $
    $         [gg (x1,x2,x3)] isExact_h :: $
   ]] putUsages
   
   /isExact {
     /arg1 set
     [/in-isExact  /vv /comp /i /j /n /kernel.i /ans] pushVariables
     [
       /comp arg1 0 get def
       /vv arg1 1 get def
       /n comp length def
       /ans 1 def
       0 1 n 2 sub {
         /i set
         /j i 1 add def
         isExact.verbose { (Checking ker ) messagen i messagen ( = im of ) messagen
                        j message } {   } ifelse
         [comp i get vv] syz 0 get /kernel.i set
         [ kernel.i comp j get vv] isSameIdeal /ans set
         ans 0 eq {
           (image != kernel at ) messagen i messagen ( and ) messagen j message
            /LLL.isExact goto
         } {  } ifelse
         isExact.verbose { (OK) message } {  } ifelse
       } for
       /LLL.isExact
       /arg1 ans def
     ] pop
     popVariables
     arg1
   } def
   
   [(isExact)
   [( complex isExact bool )
    (It returns 1 when the given complex is exact. All computations are done)
    (in D, the ring of differentialoperators. Inputs are dehomogenized.)
    (cf. syz, isSameIdeal )
    $Example1: [ [[1 2 3]] [0]] gkz /ff set $
    $         [ff 0 get (x1,x2,x3) [[(x2) -1 (Dx2) 1]]] resol1 /gg set $
    $         [gg (x1,x2,x3)] isExact :: $
    $         gg 1 get 0 get /pp set $
    $         gg [1 1] pp put $
    $         [gg (x1,x2,x3)] isExact :: $
    $Example2: [ [[1 2 3]] [0]] gkz /ff set $
    $         [ff 0 get (x1,x2,x3) [[(x2) -1 (Dx2) 1]]] resol1 /gg set $
    $         gg dehomogenize /gg set $
    $         [gg (x1,x2,x3)] isExact :: $
    (       The syzygies of f_i^h in D<h> do not always give generators of )
    (       the corresponding syzygy of f_i in D.)
 ]] putUsages  ]] putUsages
   

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.8

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>