Difference between revisions of "User:KHiddemann/GeSHi"
From ApCoCoAWiki
KHiddemann (talk | contribs) (Another example) |
KHiddemann (talk | contribs) m (→Line numbering) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | ==GeSHi example== | ||
An example taken from the [[CoCoASchool2007|CoCoA School 2007]] to demonstrate syntax highlighting of CoCoAL code in the Wiki: | An example taken from the [[CoCoASchool2007|CoCoA School 2007]] to demonstrate syntax highlighting of CoCoAL code in the Wiki: | ||
Line 41: | Line 42: | ||
EndDefine;</cocoa> | EndDefine;</cocoa> | ||
+ | ==Another example== | ||
Another example: | Another example: | ||
<cocoa>// Exercise: Make one-liners out of these functions... | <cocoa>// Exercise: Make one-liners out of these functions... | ||
Line 73: | Line 75: | ||
Return I+Ideal([SqFree(G) | G In E]); | Return I+Ideal([SqFree(G) | G In E]); | ||
EndIf; | EndIf; | ||
+ | EndDefine;</cocoa> | ||
+ | |||
+ | ==Line numbering== | ||
+ | Line numbering in action: | ||
+ | <cocoa line=1>Define S_ij(G_i, G_j) | ||
+ | Return LCM(LT(G_i), LT(G_j))/LT(G_i) * G_i/LC(G_i) - LCM(LT(G_i), LT(G_j))/LT(G_j) * G_j/LC(G_j); | ||
+ | EndDefine; | ||
+ | |||
+ | Define CheckGB(F) | ||
+ | B := [I | I In (1..Len(F))><(1..Len(F)) And I[1] < I[2]]; | ||
+ | S := [NR(S_ij(F[I[1]], F[I[2]]), F) | I In B]; | ||
+ | Return EqSet(S, [0]); | ||
+ | EndDefine; | ||
+ | |||
+ | R_1 ::= Q[x,y], Lex; | ||
+ | R_2 ::= Q[x,y], DegRevLex; | ||
+ | R_3 ::= Q[x,y,z], Lex; | ||
+ | R_4 ::= Q[x,y,z], DegLex; | ||
+ | R_5 ::= Q[x[1..4]], DegRevLex; | ||
+ | |||
+ | Using R_1 Do | ||
+ | CheckGB([x^2, xy+y^2, y^3]); | ||
+ | EndUsing; | ||
+ | |||
+ | Using R_2 Do | ||
+ | CheckGB([x^2-1, xy^2-x]); | ||
+ | EndUsing; | ||
+ | |||
+ | Using R_3 Do | ||
+ | CheckGB([xy^2-xz+y, xy-z^2, x-yz^4]); | ||
+ | EndUsing; | ||
+ | |||
+ | Using R_4 Do | ||
+ | CheckGB([x^4y^2-z^5, x^3y^3-1, x^2y^4-2z]); | ||
+ | EndUsing; | ||
+ | |||
+ | Using R_5 Do | ||
+ | CheckGB([x[1]x[3]-x[2]^2, x[1]x[4]-x[2]x[3], x[2]x[4]-x[3]^2]); | ||
+ | EndUsing;</cocoa> | ||
+ | |||
+ | Custom starting number: | ||
+ | <cocoa line=1 start=5>Define CheckGB(F) | ||
+ | B := [I | I In (1..Len(F))><(1..Len(F)) And I[1] < I[2]]; | ||
+ | S := [NR(S_ij(F[I[1]], F[I[2]]), F) | I In B]; | ||
+ | Return EqSet(S, [0]); | ||
EndDefine;</cocoa> | EndDefine;</cocoa> |
Latest revision as of 20:59, 9 August 2007
GeSHi example
An example taken from the CoCoA School 2007 to demonstrate syntax highlighting of CoCoAL code in the Wiki:
Define Reduce(Generators) -- Generators: List of polynomials -- returns a set of generators with pairwise different LTs -- (hence K-linear independent) Generators := NonZero(Generators); -- remove zero polynomials LinIndGens := []; While Len(Generators) > 0 Do -- find polynomial with largest LT MaxPoly := Generators[1]; MaxTerm := LT(MaxPoly); MaxPos := 1; For Pos := 2 To Len(Generators) Do If LT(Generators[Pos]) > MaxTerm Then MaxPoly := Generators[Pos]; MaxTerm := LT(MaxPoly); MaxPos := Pos EndIf EndFor; MaxPoly := MaxPoly / LC(MaxPoly); Append( LinIndGens, MaxPoly); Remove( Generators, MaxPos); -- reduce other polynomials For Pos := 1 To Len(Generators) Do If LT(Generators[Pos]) = MaxTerm Then Generators[Pos] := Generators[Pos] - LC(Generators[Pos]) * MaxPoly EndIf EndFor; -- remove zero polynomials Generators := NonZero(Generators) EndWhile; Return LinIndGens EndDefine;
Another example
Another example:
// Exercise: Make one-liners out of these functions... Define IsVarPower(I,T) L := Log(T); Return (Len(NonZero(L))=0) Or (Len(NonZero(L))=1 And L[I]<>0); EndDefine; Define IsZeroDim(I) VP := [[ IsVarPower(N,G) | G In Gens(LT(I)) ] | N In 1..NumIndets() ]; Return Not FALSE IsIn [ TRUE IsIn L | L In VP]; EndDefine; // Exercise: Why DO you have to check if your poly is constant? Define SqFree(F) If (F=0 Or Deg(F)=0) Then Return 1; Elsif (UnivariateIndetIndex(F)=0) Then Error("Non-univariate poly "+Sprint(F)); Else Return F/GCD(F, Der(F, Indet(UnivariateIndetIndex(F)))); EndIf; EndDefine; Define ZeroDimRadical(I) E := [ Head(Gens(Elim(Diff(Indets(), [X]), I))) | X In Indets() ]; If 0 IsIn E Then Error("Infinite set "+Sprint(I)); Else Return I+Ideal([SqFree(G) | G In E]); EndIf; EndDefine;
Line numbering
Line numbering in action:
Define S_ij(G_i, G_j) Return LCM(LT(G_i), LT(G_j))/LT(G_i) * G_i/LC(G_i) - LCM(LT(G_i), LT(G_j))/LT(G_j) * G_j/LC(G_j); EndDefine; Define CheckGB(F) B := [I | I In (1..Len(F))><(1..Len(F)) And I[1] < I[2]]; S := [NR(S_ij(F[I[1]], F[I[2]]), F) | I In B]; Return EqSet(S, [0]); EndDefine; R_1 ::= Q[x,y], Lex; R_2 ::= Q[x,y], DegRevLex; R_3 ::= Q[x,y,z], Lex; R_4 ::= Q[x,y,z], DegLex; R_5 ::= Q[x[1..4]], DegRevLex; Using R_1 Do CheckGB([x^2, xy+y^2, y^3]); EndUsing; Using R_2 Do CheckGB([x^2-1, xy^2-x]); EndUsing; Using R_3 Do CheckGB([xy^2-xz+y, xy-z^2, x-yz^4]); EndUsing; Using R_4 Do CheckGB([x^4y^2-z^5, x^3y^3-1, x^2y^4-2z]); EndUsing; Using R_5 Do CheckGB([x[1]x[3]-x[2]^2, x[1]x[4]-x[2]x[3], x[2]x[4]-x[3]^2]); EndUsing;
Custom starting number:
Define CheckGB(F) B := [I | I In (1..Len(F))><(1..Len(F)) And I[1] < I[2]]; S := [NR(S_ij(F[I[1]], F[I[2]]), F) | I In B]; Return EqSet(S, [0]); EndDefine;