=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Doc/gfan.sm1,v retrieving revision 1.13 retrieving revision 1.20 diff -u -p -r1.13 -r1.20 --- OpenXM/src/kan96xx/Doc/gfan.sm1 2009/08/26 04:54:17 1.13 +++ OpenXM/src/kan96xx/Doc/gfan.sm1 2018/05/02 02:28:13 1.20 @@ -1,9 +1,43 @@ -% $OpenXM: OpenXM/src/kan96xx/Doc/gfan.sm1,v 1.12 2005/07/07 07:53:37 takayama Exp $ +% $OpenXM: OpenXM/src/kan96xx/Doc/gfan.sm1,v 1.19 2013/10/11 01:08:35 takayama Exp $ % cp cone.sm1 $OpenXM_HOME/src/kan96xx/Doc/gfan.sm1 -% $Id: gfan.sm1,v 1.13 2009/08/26 04:54:17 takayama Exp $ +% $Id: gfan.sm1,v 1.20 2018/05/02 02:28:13 takayama Exp $ % iso-2022-jp %%Ref: @s/2004/08/21-note.pdf +%% gfan.sm1 works only for polymake 2.0 Use webservice of 2.0. +[(gfan) +[ + (gfan.sm1 is a package to compute global and local Grobner fans.) + (See R.Bahloul and N.Takayama, arxiv, math.AG/0412044 and references as to algorithms.) + (At the beginning of the source code gfan.sm1, there are sample inputs cone.sample and cone.sample2.) + ( ) + (gfan.sm1 works only with polymake 2.0. We provide a web service of computing ) + (with polymake 2.0. /@@@polymake.web 1 def is set by default in gfan.sm1.) + (See changelog-ja.tex as to details on the difference between 2.0 and later versions.) + ( ) + (*cone.sample ; is an example. See the source code. The state polytope is the hexagon.) + ( ) + (*cone.Wt cone.Lpt {vertices in the output} are weights on the rays of the Grobner cone.) + (*cone.L gives a basis of the linearity space.) + (*cone.Lp gives a basis of the pointed cone. cone.Lpt is the transpose of cone.Lp.) + $*When v is a row vector in an ouput cone, (v cone.Lp cone.W) gives $ + ( the corresponding weight vector in the full variable space in D) + (*cone.incidence is a list of [[cone num1,facet num1], [cone num2,facet num2]]) + ( which means that cone num1 and cone num2 are adjacent and shares ) + ( the facet num1 and the facet num2) + (*/cone.withGblist 1 def saves the Grobner basis standing for each cone.) + ( ) + (*Cone descriptions: cone.fan) + (**A facet is given by its normal vector n of a cone. It gives facet num of the cone.) + (**A cone is defined by facet normal vectors n1, n2, ... as n1.x>=0 and n2.x >=0 and ...) + (**facetsv is a list of facets expressed by generators.) + (**nextcid is a list of the adjacent cone numbers.) + (**nextfid is a list of the shared facet numbers.) + (**vertices is the generators of a cone.) + (**inequalities are not necessarily unique.) +] +] putUsages + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Two examples are given below to get a global Grobner fan and %% a local Grobner fan ; cone.sample and cone.sample2 @@ -91,6 +125,9 @@ def cone.comment message (cone.input = ) message cone.input message +%%% Step 0. If you want to output Grobner basis standing for each cone, then uncomment +% /cone.withGblist 1 def + %%%% Step 1. Enumerating the Grobner Cones in a global ring. %%%% The result is stored in cone.fan getGrobnerFan @@ -99,7 +136,7 @@ getGrobnerFan printGrobnerFan %%%% If you want to save the data to the file sm1out.txt, then uncomment. -% /cone.withGblist 1 def saveGrobnerFan /ff set ff output +%saveGrobnerFan /ff set ff output %%%% Step 2. Dehomogenize the Grobner Cones %%%% by the equivalence relation in a local ring (uncomment). @@ -250,14 +287,16 @@ dhcone.printGrobnerFan % If you use the cgi/polymake on the net, then uncomment out. %/doPolymake {doPolymake.OoHG} def (Using doPolymake.OoHG ) message %/polymake.start {polymake.start.OoHG} def (Using polymake.start.OoHG ) message +/@@@polymake.web 1 def %% Choose it automatically. -[(which) (polymake)] oxshell tag 0 eq { - (Polymake is not installed in this system.) message - /doPolymake {doPolymake.OoHG} def - (Using doPolymake.OoHG ) message - /polymake.start {polymake.start.OoHG} def - (Using polymake.start.OoHG ) message -} { (Local polymake will be used.) message } ifelse +[(which) (polymake)] oxshell tag 0 eq +@@@polymake.web 1 eq +or +{ + (Polymake is not installed in this system or @@@polymake.web is set.) message + usePolymake.OoHG.curl + (Using doPolymake.OoHG.curl ) message +} { usePolymake.local (Local polymake will be used.) message } ifelse /cone.debug 1 def @@ -1020,7 +1059,7 @@ def %> /getConeInfo { /arg1 set - [/ww /g /ceq /ceq2 /cdim /mmc /mmL /rr /ineq /ppt] pushVariables + [/ww /g /ceq /ceq2 /cdim /mmc /mmL /rr /ineq /ppt /rr0 /mm0 /mm1] pushVariables [ /ceq arg1 def ceq pruneZeroVector /ceq set @@ -1029,13 +1068,22 @@ def (Monomial ideal is not accepted as an input.) cone_ir_input } { } ifelse + /mm1 + ( Use [(keep_tmp_files) 1] oxshell to check the input to polymake2tfb. See /tmp or $TMP ) + def + ceq genPo2 /ceq2 set % ceq2 は polymake.data(polymake.INEQUALITIES(...)) 形式 % polymake で ceq2 の次元の計算. /getConeInfo.ceq ceq def /getConeInfo.ceq2 ceq2 def cone.debug { (Calling polymake DIM.) message } { } ifelse - [(DIM) ceq2] doPolymake 1 get /rr set + [(DIM) ceq2] doPolymake /rr0 set + % rr0 2 get message + rr0 2 get 1 get 0 get /mm0 set + mm0 length 0 eq { } + { [mm0 mm1] cat error } ifelse + rr0 1 get /rr set cone.debug {(Done.) message } { } ifelse % test5 には次のコメントとりさる. 上の行をコメントアウト. % test5.data tfbToTree /rr set @@ -1050,13 +1098,24 @@ def % FACETS を持っていないなら再度計算する. % POINTED, NOT__POINTED も得られる cone.debug { (Calling polymake FACETS.) message } { } ifelse - [(FACETS) ceq2] doPolymake 1 get /rr set + [(FACETS) ceq2] doPolymake /rr0 set + + % rr0 2 get message + rr0 2 get 1 get 0 get /mm0 set + mm0 length 0 eq { } + { [mm0 mm1] cat error } ifelse + + rr0 1 get /rr set cone.debug { (Done.) message } { } ifelse } { } ifelse rr (VERTICES) getNode tag 0 eq { (internal error: VERTICES is not found.) error - } { } ifelse + } { + rr (VERTICES) getNode + (UNDEF) getNode tag 0 eq { } + { (internal error: VERTICES is UNDEF. See rr. Set /@@@polymake.web 1 def) error } ifelse + } ifelse /cone.getConeInfo.rr1 rr def @@ -1626,7 +1685,7 @@ def /vlist arg1 def /wlist arg2 def wlist length vlist length eq { - } { (cone_wtowv: length of the argument must be the same.) error} ifelse + } { (cone_wtowv: length of the argument must be the same. Please check the values of cone.vlist cone.vv cone.type parametrizeWeightSpace) error} ifelse wlist to_int32 /wlist set [ @@ -2742,6 +2801,7 @@ def /printGrobnerFan { [/i] pushVariables [ + $(gfan) usage to find explanations on variables.$ message (========== Grobner Fan ====================) message [ (cone.comment)