version 1.4, 2000/02/24 12:33:47 |
version 1.34, 2004/09/12 01:32:08 |
|
|
/* $OpenXM: OpenXM/src/kan96xx/Kan/usage.c,v 1.3 2000/02/24 00:27:12 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/kan96xx/Kan/usage.c,v 1.33 2004/09/11 12:13:41 takayama Exp $ */ |
#include <stdio.h> |
#include <stdio.h> |
#include "datatype.h" |
#include "datatype.h" |
#include "stackm.h" |
#include "stackm.h" |
|
|
*/ |
*/ |
|
|
void Kusage(ob) |
void Kusage(ob) |
struct object ob; |
struct object ob; |
{ |
{ |
char *s; |
char *s; |
printf("\n"); |
printf("\n"); |
Line 27 struct object ob; |
|
Line 27 struct object ob; |
|
#define fppp fprintf |
#define fppp fprintf |
|
|
void Kusage2(fp,s) |
void Kusage2(fp,s) |
FILE *fp; |
FILE *fp; |
char *s; |
char *s; |
{ |
{ |
/*int n,i; fprintf(stderr,"\n%d: ",strlen(s)); |
/*int n,i; fprintf(stderr,"\n%d: ",strlen(s)); |
for (i=0; i<strlen(s); i++) fprintf(stderr," %x",s[i]);*/ |
for (i=0; i<strlen(s); i++) fprintf(stderr," %x",s[i]);*/ |
if (strcmp(s,"add")==0) { |
if (strcmp(s,"add")==0) { |
fppp(fp,"<< obj1 obj2 add obj3 >>\n"); |
fppp(fp,"<< obj1 obj2 add obj3 >>\n"); |
fppp(fp,"obj3 is the sum of obj1 and obj2.\n"); |
fppp(fp,"obj3 is the sum of obj1 and obj2.\n"); |
|
|
}else if (strcmp(s,"closefile")==0) { |
}else if (strcmp(s,"closefile")==0) { |
fppp(fp,"<< fd closefile >>\n"); |
fppp(fp,"<< fd closefile >>\n"); |
fppp(fp,"file fd;\n"); |
fppp(fp,"file fd;\n"); |
|
fppp(fp,"cf. file (open a file)\n"); |
}else if (strcmp(s,"coefficients")==0 || strcmp(s,"coeff")==0) { |
}else if (strcmp(s,"coefficients")==0 || strcmp(s,"coeff")==0) { |
fppp(fp,"<< f v coeff [exponents coefficients] >>\n"); |
fppp(fp,"<< f v coeff [exponents coefficients] >>\n"); |
fppp(fp,"poly f,v; list of integers exponents; list of poly coefficients;\n"); |
fppp(fp,"poly f,v; list of integers exponents; list of poly coefficients;\n"); |
|
|
fppp(fp," map, orderMatrix, error, \n"); |
fppp(fp," map, orderMatrix, error, \n"); |
fppp(fp," or [(class) (class-name)].\n"); |
fppp(fp," or [(class) (class-name)].\n"); |
fppp(fp,"The primitive reports and converts the data type of obj.\n"); |
fppp(fp,"The primitive reports and converts the data type of obj.\n"); |
|
fppp(fp,"Special combinations of obj and keyword.\n"); |
|
fppp(fp," ring (oxRingStructure) data_conversion list\n"); |
fppp(fp,"Example: (2) (integer) data_conversion ===> 2\n"); |
fppp(fp,"Example: (2) (integer) data_conversion ===> 2\n"); |
}else if (strcmp(s,"def")==0 || strcmp(s,"set")==0) { |
}else if (strcmp(s,"def")==0 || strcmp(s,"set")==0) { |
fppp(fp,"<< /name object def >> or << object /name set >>\n"); |
fppp(fp,"<< /name object def >> or << object /name set >>\n"); |
|
|
fppp(fp," [(getpid) ] extension result-integer \n"); |
fppp(fp," [(getpid) ] extension result-integer \n"); |
fppp(fp," [(getenv) envName] extension valueOfEnvName \n"); |
fppp(fp," [(getenv) envName] extension valueOfEnvName \n"); |
fppp(fp," [(stat) fname] extension v \n"); |
fppp(fp," [(stat) fname] extension v \n"); |
fppp(fp," v = [null,[(error no), p] or [0, [ ]]\n"); |
fppp(fp," v = [null,[(error no), p]] or [0, [size ]]\n"); |
fppp(fp," [(forkExec) argList fdList sigblock] extension pid\n"); |
fppp(fp," [(forkExec) argList fdList sigblock] extension pid\n"); |
|
fppp(fp," [(getattr) literal] extension attr\n"); |
fppp(fp," [(getchild)] extension listOfPid (generated by forkExec)\n"); |
fppp(fp," [(getchild)] extension listOfPid (generated by forkExec)\n"); |
fppp(fp," [(keywords) ] extension array-of-names-of-primitives \n"); |
fppp(fp," [(keywords) ] extension array-of-names-of-primitives \n"); |
|
fppp(fp," [(nobody) ] extension null \n"); |
|
fppp(fp," [(newMatrix) m n] extension mat \n"); |
|
fppp(fp," [(newVector) m ] extension vec \n"); |
fppp(fp," [(getUniqueFileName) path] extension newName \n"); |
fppp(fp," [(getUniqueFileName) path] extension newName \n"); |
|
fppp(fp," [(or_attr) atr literal] extension new_value \n"); |
fppp(fp," [(outputObjectToFile) path obj] extension null \n"); |
fppp(fp," [(outputObjectToFile) path obj] extension null \n"); |
|
fppp(fp," [(ostype)] extension list \n"); |
|
fppp(fp," [(regionMatches) string stringArray] extension list \n"); |
|
fppp(fp," [(traceClearStack)] extension null \n"); |
|
fppp(fp," [(traceShowStack)] extension str \n"); |
/* fppp(fp," [(asir0) string] extension result-object \n"); */ |
/* fppp(fp," [(asir0) string] extension result-object \n"); */ |
fppp(fp,"See also plugin-* in ??. \n"); |
fppp(fp,"See also plugin-* in ??. \n"); |
}else if (strcmp(s,"file")==0) { |
}else if (strcmp(s,"file")==0) { |
|
|
fppp(fp,"It opens the <<filename>> with the <<mode>>. <<fd>> is the\n"); |
fppp(fp,"It opens the <<filename>> with the <<mode>>. <<fd>> is the\n"); |
fppp(fp,"file descripter and is used in writestring and closefile.\n"); |
fppp(fp,"file descripter and is used in writestring and closefile.\n"); |
fppp(fp,"If filename part is an integer, it calls fdopen() and returns the file descripter.\n"); |
fppp(fp,"If filename part is an integer, it calls fdopen() and returns the file descripter.\n"); |
|
fppp(fp,"cf. closefile, writestring, pushfile \n"); |
}else if (strcmp(s,"for")==0) { |
}else if (strcmp(s,"for")==0) { |
fppp(fp,"<<init inc limit {executable array} for >>\n"); |
fppp(fp,"<<init inc limit {executable array} for >>\n"); |
fppp(fp,"integer init inc limit;\n"); |
fppp(fp,"integer init inc limit;\n"); |
|
|
fppp(fp,"array of objects obj1;"); |
fppp(fp,"array of objects obj1;"); |
fppp(fp,"The first element of the obj1 should be the key word tag.\n"); |
fppp(fp,"The first element of the obj1 should be the key word tag.\n"); |
fppp(fp,"<< gbext >> is used to call auxiliary functions for g-basis computation. \n"); |
fppp(fp,"<< gbext >> is used to call auxiliary functions for g-basis computation. \n"); |
|
fppp(fp," [(divByN) poly1 n(universalNumber)] gbext [qpoly rpoly] \n"); |
|
fppp(fp," where poly1 = n*qpoly+rpoly.\n"); |
|
fppp(fp," (see also cancelCoeff) \n"); |
|
fppp(fp," [(exponents) poly type ] gbext array \n"); |
|
fppp(fp," example: type == 0 x,y,Dx,Dy\n"); |
|
fppp(fp," type == 1 x,y,Dx,Dy,h,H\n"); |
|
fppp(fp," type == 2 x,y,Dx,Dy,h --- default.\n"); |
|
fppp(fp," [(grade) poly1 ] gbext integer \n"); |
|
fppp(fp," [(isConstant) poly] gbext bool \n"); |
|
fppp(fp," [(isConstantAll) poly] gbext bool \n"); |
|
fppp(fp," [(isOrdered) poly] gbext poly \n"); |
fppp(fp," [(isReducible) poly1 poly2 ] gbext integer \n"); |
fppp(fp," [(isReducible) poly1 poly2 ] gbext integer \n"); |
fppp(fp," [(lcm) poly1 poly2] gbext poly \n"); |
fppp(fp," [(lcm) poly1 poly2] gbext poly \n"); |
fppp(fp," [(grade) poly1 ] gbext integer \n"); |
fppp(fp," [(lcoeff) poly] gbext poly \n"); |
|
fppp(fp," [(lmonom) poly] gbext poly \n"); |
fppp(fp," [(mod) poly1 universalNumber] gbext poly \n"); |
fppp(fp," [(mod) poly1 universalNumber] gbext poly \n"); |
fppp(fp," poly = poly1 mod universalNumber where char=0 and \n"); |
fppp(fp," poly = poly1 mod universalNumber where char=0 and \n"); |
fppp(fp," poly and poly2 belong to a same ring.\n"); |
fppp(fp," poly and poly2 belong to a same ring.\n"); |
|
fppp(fp," [(ord_ws_all) fv wv] gbext integer \n"); |
|
fppp(fp," [(reduceContent) poly] gbext [poly c] \n"); |
fppp(fp," [(tomodp) poly1 ring] gbext poly, char(ring)>0. \n"); |
fppp(fp," [(tomodp) poly1 ring] gbext poly, char(ring)>0. \n"); |
fppp(fp," poly = poly1 mod char(ring) where poly belongs to ring.\n"); |
fppp(fp," poly = poly1 mod char(ring) where poly belongs to ring.\n"); |
fppp(fp," [(tomod0) poly1 ring] gbext poly, char(ring)=0. \n"); |
fppp(fp," [(tomod0) poly1 ring] gbext poly, char(ring)=0. \n"); |
fppp(fp," [(divByN) poly1 n(universalNumber)] gbext [qpoly rpoly] \n"); |
|
fppp(fp," where poly1 = n*qpoly+rpoly.\n"); |
|
fppp(fp," (see also cancelCoeff) \n"); |
|
fppp(fp," [(isConstant) poly] gbext bool \n"); |
|
fppp(fp," [(lcoeff) poly] gbext poly \n"); |
|
fppp(fp," [(lmonom) poly] gbext poly \n"); |
|
fppp(fp," [(schreyerSkelton) array_of_poly] gbext array \n"); |
fppp(fp," [(schreyerSkelton) array_of_poly] gbext array \n"); |
fppp(fp," [(toes) array_of_poly] gbext poly \n"); |
fppp(fp," [(toes) array_of_poly] gbext poly \n"); |
fppp(fp," [(isOrdered) poly] gbext poly \n"); |
fppp(fp," [(toe_) poly] gbext poly \n"); |
|
fppp(fp," [(toe_) array_of_poly] gbext poly cf. toVectors \n"); |
}else if (strcmp(s,"get")==0) { |
}else if (strcmp(s,"get")==0) { |
fppp(fp,"<< [f0 f1 ... fn] k get fk >>\n"); |
fppp(fp,"<< [f0 f1 ... fn] k get fk >>\n"); |
fppp(fp,"integer k;"); |
fppp(fp,"integer k;"); |
fppp(fp,"The primitive gets the k-th element of a given array.\n"); |
fppp(fp,"The primitive gets the k-th element of a given array.\n"); |
fppp(fp,"Example: [1 4 3] 1 get :: ---> 4\n"); |
fppp(fp,"Example: [1 4 3] 1 get :: ---> 4\n"); |
|
fppp(fp,"<< ob [k0 k1 ... ] get f >>\n"); |
|
fppp(fp,"It is equivalent to << ob k0 get k1 get ... >>\n"); |
|
fppp(fp,"The primitive get works for array or list.\n"); |
}else if (strcmp(s,"goto")==0) { |
}else if (strcmp(s,"goto")==0) { |
fppp(fp,"<< label goto >>\n"); |
fppp(fp,"<< label goto >>\n"); |
fppp(fp,"literal label;\n"); |
fppp(fp,"literal label;\n"); |
|
|
}else if (strcmp(s,"homogenize") == 0) { |
}else if (strcmp(s,"homogenize") == 0) { |
fppp(fp,"<< f homogenize g >>\n"); |
fppp(fp,"<< f homogenize g >>\n"); |
fppp(fp,"poly f,g;\n"); |
fppp(fp,"poly f,g;\n"); |
fppp(fp,"array of poly f,g;\n"); |
fppp(fp,"array of poly f,g;\n\n"); |
|
fppp(fp,"[(degreeShift) (value)] homogenize [shiftD shiftUV]\n"); |
|
fppp(fp,"[(degreeShift) (reset)] homogenize [null null]\n"); |
|
fppp(fp,"[(degreeShift) shiftD ] homogenize [shiftD shiftUV]\n"); |
|
fppp(fp,"[(degreeShift) [shiftD shiftUV]] homogenize [shiftD shiftUV]\n"); |
|
fppp(fp,"[(degreeShift) [ ] fv] homogenize hfv\n"); |
|
fppp(fp,"[(degreeShift) shiftD fv] homogenize hfv\n"); |
|
fppp(fp,"[(degreeShift) [shiftD shiftUV] fv] homogenize hfv\n"); |
|
fppp(fp,"shiftD : degree shift vector for (0,1)-h homogenization\n"); |
|
fppp(fp,"shiftUV : degree shift vector for (-1,1)-s homogenization (internal for ecart.)\n"); |
|
fppp(fp,"fv : polynomial or vector of polynomials.\n"); |
|
fppp(fp,"Example: [(x) ring_of_differential_operators 0] define_ring\n"); |
|
fppp(fp," [(degreeShift) [[1 0] [0 1]] [(x+1). (Dx+1).]] homogenize ::\n"); |
|
fppp(fp," [(degreeShift) (value)] homogenize ::\n"); |
|
fppp(fp,"Note. min of ord (-1,1)[0,1] is min {-1,1, 1+1,1+0} = -1 =m \n"); |
|
fppp(fp," Degree of H is b-a+v(i)-m where v=[0,1]\n"); |
|
fppp(fp,"Side effects: It changes h-degree shift vector and s-degree shift vector\n"); |
|
fppp(fp," in homogenizeObject_go(), which is called from ecart division codes\n"); |
|
fppp(fp," as well as the function homogenize.\n"); |
|
fppp(fp,"DegreeShift is automatically reset when set_up_ring is called.\n"); |
}else if (strcmp(s,"idiv") == 0) { |
}else if (strcmp(s,"idiv") == 0) { |
fppp(fp,"<< a b idiv a/b >>\n"); |
fppp(fp,"<< a b idiv a/b >>\n"); |
fppp(fp,"int a,b,a/b;\n"); |
fppp(fp,"int a,b,a/b;\n"); |
fppp(fp,"Example: 5 2 idiv :: ===> 2\n"); |
fppp(fp,"Example: 5 2 idiv :: ===> 2\n"); |
}else if (strcmp(s,"ifelse") == 0) { |
}else if (strcmp(s,"ifelse") == 0) { |
fppp(fp,"<< condition { true case } { false case } ifelse >>\n"); /*:*/ |
fppp(fp,"<< condition { true case } { false case } ifelse >>\n"); /*:*/ |
/* Tenuki mark --------------^ */ |
/* Tenuki mark --------------^ */ |
fppp(fp,"integer condition;\n"); |
fppp(fp,"integer condition;\n"); |
fppp(fp,"If condition is non-zero, then true-case will be executed,\n"); |
fppp(fp,"If condition is non-zero, then true-case will be executed,\n"); |
fppp(fp,"else false-case will be executed.\n"); |
fppp(fp,"else false-case will be executed.\n"); |
|
|
fppp(fp,"h is the initial term of the polynomial f.\n"); |
fppp(fp,"h is the initial term of the polynomial f.\n"); |
fppp(fp,"Example: (2 x^3 + 3 x + 1). init :: ---> 2 x^3\n"); |
fppp(fp,"Example: (2 x^3 + 3 x + 1). init :: ---> 2 x^3\n"); |
fppp(fp,"Example: [(x^3+1). (x h+ h^5).] {init} map ::\n"); |
fppp(fp,"Example: [(x^3+1). (x h+ h^5).] {init} map ::\n"); |
fppp(fp,"Example: (x+1). [0 1 1 1] init :: cf. weightv \n"); |
fppp(fp,"Example: (x+1). [0 1 1 1] init :: cf. weightv \n\n"); |
|
fppp(fp,"<< fv weight_vector init h >>\n"); |
|
fppp(fp,"<< fv [weight_vector shift_vector] init h >>\n"); |
|
fppp(fp,"<< fv init h >> or << hv [ ] init h >>\n"); |
|
fppp(fp,"fv is a polynomial or a vector of polynomials.\n"); |
|
fppp(fp,"h is the initial term with respect to the weight vector and the shift vector\n"); |
|
fppp(fp,"if they are given.\n"); |
|
fppp(fp,"Note: the last x variable is always assumed to be the vector index.\n"); |
|
fppp(fp,"Example: [(x,y) ring_of_differential_operators 0] define_ring\n"); |
|
fppp(fp," [(x^2*Dx^2+2*x*Dx+x). (Dx+x).] [[(Dx) 1 (x) -1] weightv [0 -1]] init ::\n"); |
}else if (strcmp(s,"lc")==0) { |
}else if (strcmp(s,"lc")==0) { |
fppp(fp,"<< obj lc leftCell >>\n"); |
fppp(fp,"<< obj lc leftCell >>\n"); |
fppp(fp,"class leftCell;\n"); |
fppp(fp,"class leftCell;\n"); |
|
|
}else if (strcmp(s,"newstack") == 0) { |
}else if (strcmp(s,"newstack") == 0) { |
fppp(fp,"<< size newstack class.OperandStack >>\n"); /*:*/ |
fppp(fp,"<< size newstack class.OperandStack >>\n"); /*:*/ |
fppp(fp,"cf. setstack, stdstack.\n"); |
fppp(fp,"cf. setstack, stdstack.\n"); |
|
}else if (strcmp(s,"oxshell") == 0) { |
|
fppp(fp,"<< cmds oxshell result >>\n"); /*:*/ |
|
fppp(fp,"cmds is an array of strings.\n"); |
|
KoxShellHelp((char *)NULL,fp); |
}else if (strcmp(s,"pop")==0) { |
}else if (strcmp(s,"pop")==0) { |
fppp(fp,"<< obj pop >> \n"); /*:*/ |
fppp(fp,"<< obj pop >> \n"); /*:*/ |
fppp(fp,"It removes the obj from the stack.\n"); |
fppp(fp,"It removes the obj from the stack.\n"); |
|
|
fppp(fp,"ReduceLowerTerms, CheckHomogenization, Homogenize, Sugar, Homogenize_vec,\n"); |
fppp(fp,"ReduceLowerTerms, CheckHomogenization, Homogenize, Sugar, Homogenize_vec,\n"); |
fppp(fp,"Statistics, StackPointer, StandardOperandStack,\n"); |
fppp(fp,"Statistics, StackPointer, StandardOperandStack,\n"); |
fppp(fp,"ErrorStack, ErrorMessageMode, WarningMessageMode,\n"); |
fppp(fp,"ErrorStack, ErrorMessageMode, WarningMessageMode,\n"); |
fppp(fp,"CatchCtrlC, Strict, CurrentContextp, NullContextp, Strict2,\n"); |
fppp(fp,"CatchCtrlC, Strict, CurrentContextp, NullContextp, Strict2, QuoteMode\n"); |
fppp(fp,"SigIgn, KSPushEnvMode, PrimitiveContextp, KanGBmessage,\n"); |
fppp(fp,"SigIgn, KSPushEnvMode, PrimitiveContextp, KanGBmessage,\n"); |
fppp(fp,"orderMatrix, gbListTower, Schreyer, \n"); |
fppp(fp,"orderMatrix, gbListTower, Schreyer, \n"); |
fppp(fp,"outputOrder, multSymbol, variableNames, Version,\n"); |
fppp(fp,"outputOrder, multSymbol, variableNames, Version,\n"); |
fppp(fp,"AvoidTheSameRing, RingStack, LeftBracket, RightBracket,\n"); |
fppp(fp,"AvoidTheSameRing, RingStack, LeftBracket, RightBracket,\n"); |
fppp(fp,"AutoReduce, SecureMode\n"); |
fppp(fp,"AutoReduce, SecureMode, Ecart, EcartAutomaticHomogenization\n"); |
|
fppp(fp,"DoCancel, DebugContentReduction\n"); |
fppp(fp,"Example: [(N)] system_variable\n"); |
fppp(fp,"Example: [(N)] system_variable\n"); |
fppp(fp," (maximum number of variables)/2.\n"); |
fppp(fp," (maximum number of variables)/2.\n"); |
fppp(fp," [(x) (var) 3] system_variable\n"); |
fppp(fp," [(x) (var) 3] system_variable\n"); |
|
|
fppp(fp," The 4th differential operator.\n"); |
fppp(fp," The 4th differential operator.\n"); |
fppp(fp," [(PrintDollar) 0] system_variable\n"); |
fppp(fp," [(PrintDollar) 0] system_variable\n"); |
fppp(fp," Set the global variable PrintDollar to 0\n"); |
fppp(fp," Set the global variable PrintDollar to 0\n"); |
|
fppp(fp,"DebugReductionEcart (bit): (2) *% (1) find_reducer,in(r) \n"); |
|
fppp(fp," (any) cont (4) #+[rat division, + ecartd] \n"); |
|
fppp(fp," (8) check the order. \n"); |
|
fppp(fp,"DoCancel (bit): (2) always_reduce_content (1) Noro_strategy \n"); |
|
fppp(fp," (4) DoCancel_in_reduction1 \n"); |
|
}else if (strcmp(s,"tlimit")==0) { |
|
fppp(fp,"<< { ... } t tlimit results >>\n"); |
|
fppp(fp,"Limit the execution time to t seconds.\n"); |
|
fppp(fp,"When t is not positive, tlimit pushes the execution time.\n"); |
}else if (strcmp(s,"to_records")==0) { |
}else if (strcmp(s,"to_records")==0) { |
fppp(fp,"<< ({arg1,arg2,...,argn}) to_records (arg1) ... (argn) n >>\n"); |
fppp(fp,"<< ({arg1,arg2,...,argn}) to_records (arg1) ... (argn) n >>\n"); |
fppp(fp,"Example: ({x,y2}) to_records ===> (x) (y2) 2\n"); |
fppp(fp,"Example: ({x,y2}) to_records ===> (x) (y2) 2\n"); |
|
|
fppp(fp,"file fd; string s;\n"); |
fppp(fp,"file fd; string s;\n"); |
fppp(fp,"Write the string s to the file fd.\n"); |
fppp(fp,"Write the string s to the file fd.\n"); |
fppp(fp,"cf. [(PrintDollar)] system_variable, file, closefile\n"); |
fppp(fp,"cf. [(PrintDollar)] system_variable, file, closefile\n"); |
/******* macros ************/ |
/******* macros ************/ |
}else if (strcmp(s,"timer")==0) { |
}else if (strcmp(s,"timer")==0) { |
fppp(fp,"<< { executable array } timer >>\n"); /*:*/ |
fppp(fp,"<< { executable array } timer >>\n"); /*:*/ |
}else{ |
}else{ |