Annotation of OpenXM/src/kan96xx/Doc/gkz.sm1, Revision 1.1.1.1
1.1 maekawa 1: %% gkz.sm1, 1998, 11/6, 11/8
2: /gkz.version (2.981108) def
3: gkz.version [(Version)] system_variable gt
4: { (This package requires the latest version of kan/sm1) message
5: (Please get it from http://www.math.kobe-u.ac.jp/KAN) message
6: error
7: } { } ifelse
8:
9: $gkz.sm1 generates gkz systems (C) N.Takayama, 1998, 11/8, cf. rrank in hol.sm1 $ message-quiet
10: /gkz.verbose 0 def
11: /gkz.A [[1 1 1 1] [0 1 2 3]] def
12: /gkz.b [3 5] def
13:
14:
15: /gkz {
16: /arg1 set
17: [/in-gkz /aa /typev /setarg /A /b /vx /vy /vyi /w /n /k
18: /vvv /www /At /i /ff /ttt /vxd /ttt2 /ttt /i /vxrule
19: ] pushVariables
20: [(CurrentRingp) (KanGBmessage)] pushEnv %% push current global environment.
21: [
22: /aa arg1 def
23: aa isArray { } { (array gkz) message (gkz) usage error } ifelse
24: /setarg 0 def
25: aa { tag } map /typev set
26: typev [ ArrayP ArrayP ] eq
27: { /A aa 0 get def
28: /b aa 1 get def
29: /setarg 1 def
30: } { } ifelse
31: typev [ ] eq
32: {
33: /A gkz.A def
34: /b gkz.b def
35: /setarg 1 def
36: } { } ifelse
37: typev [ ArrayP ] eq
38: { /A aa 0 get def
39: /b [ 1 1 A length { pop 0 } for ] def
40: /setarg 1 def
41: } { } ifelse
42: setarg { } { (Argument mismatch) message error } ifelse
43:
44: [(KanGBmessage) gkz.verbose] system_variable
45: b length /k set
46: A 0 get length /n set
47:
48: %% vy = [ (y1) (y2)] , vyi = [(yi1) (yi2)], vx = [(x1) (x2) (x3) (x4)]
49: [ 1 1 k { } for ] { (y) 2 1 roll gensym } map /vy set
50: [ 1 1 k { } for ] { (yi) 2 1 roll gensym } map /vyi set
51: [ 1 1 n { } for ] { (x) 2 1 roll gensym } map /vx set
52:
53: %% vvv = [(y1) (y2) (yi1) (yi2) (x1) (x2) (x3) (x4)]
54: /vvv vy vyi join vx join def
55: %% www = [(y1) 1 (y2) 1 (yi1) 1 (yi2) 1]
56: /www vy vyi join { 1 } map def
57: [ vvv from_records ring_of_polynomials
58: [www] weight_vector 0] define_ring
59:
60: /At A transpose def
61: %% ff = [ x1 - y1 , x2 - y1 y2, x3 - y1 y2^2 , x4 - y1 y2^3 ]
62: [
63: 1 1 n {
64: /i set
65: (x) i gensym . vy vyi << At i 1 sub get >> gkz.prod sub
66: } for
67: 1 1 k {
68: /i set
69: (1). (y) i gensym . (yi) i gensym . mul sub %% 1- y_i yi_i
70: } for
71: ] /ff set
72: gkz.verbose { ff message } { } ifelse
73: [ff] groebner_sugar 0 get
74: vy vyi join eliminatev /ttt set
75: ttt { toString } map /ttt set
76: %%% ttt <== toric ideal
77:
78: [ vx from_records ring_of_differential_operators 0] define_ring
79: %%D-clean /vvv [ 1 1 n { /i set [(x) i gensym . (Dx) i gensym . mul] } for ] def
80: /vvv [ 1 1 n { /i set [(x) i gensym . [@@@.Dsymbol (x)] cat i gensym . mul] } for ] def
81: A { {(universalNumber) dc} map } map vvv mul transpose 0 get /ff set
82:
83: ff b {(universalNumber) dc} map sub {toString} map /ff set
84: %%% ff <== linear equations.
85:
86: %%% vxd = [(Dx1) ... (Dx4)]
87: /vxd vx {@@@.Dsymbol 2 1 roll 2 cat_n} map def
88: %% fix 1999, 3/3 for non-homogeneous toric ideal.
89: /vxrule [ 0 1 vx length 1 sub {
90: /i set
91: [vx i get . vxd i get .] } for
92: ] def
93: %% ttt { . vx vxd join laplace0 toString } map /ttt2 set
94: ttt { . vxrule replace toString } map /ttt2 set
95:
96: /arg1 [ << ff ttt2 join >> vx ] def
97: ] pop
98: popEnv
99: popVariables
100: arg1
101: } def
102:
103:
104: %% \prod y_j^{v_j}
105: %% [(y1) (y2)] [(yi1) (yi2)] [ 1 3] gkz.prod ==> y1 y2^3
106: /gkz.prod {
107: /arg3 set
108: /arg2 set
109: /arg1 set
110: [/in-gkz.prod /yy /yyi /vec /ans /i /mm] pushVariables
111: [
112: /yy arg1 def
113: /yyi arg2 def
114: /vec arg3 def
115: /ans (1). def
116: 0 1 << vec length 1 sub >> {
117: /i set
118: << vec i get >> 0 lt {
119: /mm yyi i get . << 0 vec i get sub >> npower def
120: }
121: { /mm yy i get . << vec i get >> npower def }
122: ifelse
123: /ans ans mm mul def
124: } for
125: /arg1 ans def
126: ] pop
127: popVariables
128: arg1
129: } def
130: (gkz ) messagen-quiet
131:
132: [(gkz)
133: [([ A b] gkz [eq v])
134: ([ A ] gkz [eq v])
135: ([ ] gkz [eq v])
136: (array of array of integer A; array of integer b;)
137: (eq is the GKZ system defined by the matrix A and the parameter b.)
138: (v is the list of variables.)
139: (Default values of A and b are in gkz.A and gkz.b)
140: (For details, see Functional analysis and its applications, 23, 1989, 94--106.)
141: ( Grobner deformations of hypergeometric differential equations, Springer, 1999)
142: (Example 1: [ [[1 1 1 1] [0 1 3 4]] [1 2]] gkz rrank :: )
143: (Example 2: [ [[1 1 1 1] [0 1 3 4]] [0 0]] gkz rrank :: )
144: ]
145: ] putUsages
146:
147: ( ) message-quiet ;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>