%% $OpenXM: OpenXM/src/k097/lib/minimal/k0-cohom.sm1,v 1.2 2000/07/31 01:21:41 takayama Exp $ %% These macros should be moved to dr.sm1 with usages. /define_ring_variables { [/in-define_ring_variables /v /p /v0] pushVariables [ /v getVariableNames def /v0 v def v { dup /p set (/) 2 1 roll ( $) p ($. def ) } map cat /v set % v message [(parse) v] extension ] pop popVariables } def [(define_ring_variables) [(It binds a variable <> in the current ring to the sm1 variable <>.) (For example, if x is a variable in the current ring, it defines the sm1) (variable x by /x (x) def) ]] putUsages /boundp { /arg1 set [/a /ans] pushVariables [ /a arg1 def [(parse) [(/) a ( load tag 0 eq { /ans 0 def } ) ( { /ans 1 def } ifelse )] cat ] extension /arg1 ans def ] pop popVariables arg1 } def [(boundp) [( a boundp b) (string a, b is 0 or 1.) (If the variable named << a >> is bounded to a value,) (it returns 1 else it returns 0.) $Example: (hoge) boundp ::$ ]] putUsages % w_to_vec in dr.sm1 should be replaced by the following. [(chattr) 0 /w_to_vec] extension %% [@@@.esymbol (x) (y) (h)] [(x) 100 (y) 10] w_to_vec [0 100 10 0] %% univ www /w_to_vec { /arg2 set /arg1 set [/univ /www /k /vname /vweight /ans] pushVariables /univ arg1 def /www arg2 def [ /ans << univ length >> -1 0 evecw def 0 2 << www length 2 sub >> { %% ans :: /k set www k get /vname set www << k 1 add >> get (integer) dc /vweight set << univ length >> << univ vname position >> vweight evecw ans add /ans set } for /arg1 ans def ] pop popVariables arg1 } def %%% From cohom.sm1 [ (cohom.sm1 is the top of an experimental package to compute restrictions) (of all degrees based on restall.sm1 and restall_s.sm1) (See, http://www.math.kobe-u.ac.jp to get these files of the latest version.) (Note that the package b-function.sm1 cannot be used with this package.) (r-interface.sm1 (C) N.Takayama, restriction, deRham) ( ) ] {message-quiet} map %%% Constants. /BFmessage 0 def %% restall_s.sm1 /BFnotruncate 1 def %% restall1_s or restall_s (truncation from the below) %%/Schreyer 1 def %% V-homogenize, Schreyer /Schreyer 2 def %% h-homogenize, Schreyer %%%% Load files [(parse) (oxasir.sm1) pushfile] extension %[(parse) (var.sm1) pushfile] extension %% DO NOT execute debugMode %% inside a block of pushVariables and popVariables. %% debugMode [(parse) (hol.sm1) pushfile] extension [(parse) (gkz.sm1) pushfile] extension [(parse) (appell.sm1)pushfile] extension [(parse) (resol0.sm1)pushfile] extension [(parse) (complex.sm1)pushfile] extension %%%%% [(parse) (restall.sm1) pushfile] extension pop [(parse) (restall_s.sm1) pushfile] extension pop %%%%% BFnotruncate 1 { (No truncation from below in restall) message-quiet }{ (Truncation from below in restall. It is faster, but it still contains a bug. So, put /BFnotruncate 1 def in cohom.sm1) message-quiet } ifelse %%% Automatically choose tower package. restall_s.sm1 set the variable %%% Schreyer, so set Schreyer here. Schreyer 1 eq { (The variable Schreyer is set to 1.) message-quiet }{ } ifelse Schreyer 2 eq { (The variable Schreyer is set to 2.) message-quiet }{ } ifelse Schreyer 2 eq { (Loading tower.sm1 in the standard context. You cannot use Schyrer 1. It is controlled from cohom.sm1) message-quiet [(parse) (tower.sm1) pushfile] extension pop }{ (Loading tower-sugar.sm1 in the standard context. You cannot use Schreyer 2. It is controlled from cohom.sm1) message-quiet [(parse) (tower-sugar.sm1) pushfile] extension pop } ifelse %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [(parse) (r-interface.sm1) pushfile] extension pop ( ) message-quiet /Onverbose { [ /appell.verbose /bfunction.verbose /gkz.verbose /rank.verbose /characteristic.verbose /rrank.verbose /gb.verbose /syz.verbose /fs.verbose /annfs.verbose /intw.verbose /r-interface.verbose /resol0.verbose /tower-sugar.verbose /tower.verbose /deRham.verbose ] { 1 def } map } def /Offverbose { [ /appell.verbose /bfunction.verbose /gkz.verbose /rank.verbose /characteristic.verbose /rrank.verbose /gb.verbose /syz.verbose /fs.verbose /annfs.verbose /intw.verbose /r-interface.verbose /resol0.verbose /tower-sugar.verbose /tower.verbose /deRham.verbose ] { 0 def } map } def [(Onverbose) [(Onverbose) (Turn on all verbose flags of the packages. cf. Offverbose) ]] putUsages [(Offverbose) [(Offverbose) (Turn off all verbose flags of the packages. cf. Onverbose) ]] putUsages /cohom.sm1.loaded 1 def