Hilfe zu den Funktionen von Thomas Eisenmann
im Rahmen der Diplomarbeit
"Implementation und Optimierung von
Algorithmen für 0-dimensionale Schemata"
Installation:
Damit alle Funktionen zur Verfügung stehen, erstellen sie im CoCoA-Verzeichnis
"\lib\contrib\" ein neues Unterverzeichnis "eisenmann" und legen alle Dateien
der Diskette darin ab. Anschließend öffnen sie mit einem Editor
die Datei "eisenmann_init.coc" und ersetzen falls nötig in der ersten
Zeile den Eintrag "Linux" durch das entsprechende Betriebssystem ihres
Computers. Speichern sie daraufhin die Datei und lassen sie sie in CoCoA
ausführen. Nun sind die Funktionen in ihre aktuelle CoCoA-Instanz
geladen und für diese CoCoA-Session verfügbar. Wird eine neue
Instanz von CoCoA gestartet, so muss erneut die Datei "eisenmann_init.coc"
ausgeführt werden.
Beachten sie, dass jede Funktion mit dem entsprechenden Alias des Packages, in dem sie abgelegt ist, aufgerufen werden muss:
UNI := $contrib/eisenmann/uni
CB := $contrib/eisenmann/cb
CM := $contrib/eisenmann/cm
BM := $contrib/eisenmann/bm
CODES := $contrib/eisenmann/codes
d.h. um beispielsweise die Funktion 'BuMoAlg' zu nutzen, muss der Funktionsaufruf etwa "BM.BuMoAlg(P);" lauten.
Welchem Package eine Funktion angehört, ist dieser Hilfe zu entnehmen ("Speicherort").
BuMoAlg
Syntax:
BuMoAlg(P:LIST):LIST
Beschreibung:
Buchberger-Möller-Algorithmus;
nimmt als Argument eine Liste P von affinen Punkten und liefert eine Liste
[G,Q]. Dabei ist G eine Liste von Polynomen, die eine Gröbner Basis
des Verschwindungsideals von P bilden, und Q eine Liste von Termen, deren Restklassen eine K-Basis von K[X1,...,Xn]/(G) bilden.
Speicherort: $contrib\eisenmann\bm.pkg
benötigte Funktionen: ----
CanonicalModule
Syntax:
CanonicalModule(Var P):LIST
wobei P entweder eine Liste von projektiven Punkten (erste Koordinate ungleich Null!) eines reduzierten nulldimensionalen Schemas oder ein 1-dimensionales homogenes Ideal (darf die durch [erste Unbestimmte]=0 definierte Hyperebene nicht schneiden) oder RECORD "Schema" ist.
Beschreibung:
Liefert eine Liste [Basis, M, V] zurück. Dabei ist 'Basis' eine Liste, die eine K-Basis des homogenen Koordinatenrings des gegebenen Schemas darstellt, wie man sie auch mit der Funktion 'GetBasisWithSocs' erhält (getrennt nach Sockelmonomen und sonstigen Termen). Das zweite Element M ist eine Liste von Vektoren des Syzygienmoduls des kanonischen Moduls zum gegebenen Schema/Ideal in Bezug auf die in 'Basis' gegebenen Sockelmonome. Die Vektoren bilden eine Gröbner Basis bzgl. der durch die Matrix V gegebenen Termordnung, die als dritter Teil des Ergebnisses zurückgegeben wird. (zur Darstellung des kanonischen Moduls vgl. Beck/Kreuzer, "How to Compute the Canonical Module of a Set of Points", Kapitel 5 + 6)
Speicherort: $contrib\eisenmann\cm.pkg
benötigte Funktionen: GetSyzygies
ColonOfDeg
Syntax:
ColonOfDeg(G:LIST, F:LIST, D:INT):LIST
Beschreibung:
Berechnet das Colon-Ideal (G):(F) bis zum
angegebenen Grad D und gibt eine Liste der erzeugenden Polynome zurück.
Falls D=0, so wird (G):(F) bis zum niedrigsten Grad berechnet, in dem (G):(F) nicht Null ist (Anfangsgrad).
Falls D negativ ist, wird (G):(F) bis zum Grad (Anfangsgrad)+(-D) berechnet.
Speicherort: $contrib\eisenmann\cb.pkg
benötigte Funktionen: ----
EMatComb
Syntax:
EMatComb(N:MAT, K:INT, I:INT, J:INT):MAT
Beschreibung:
Führt elementare Zeilenoperation auf
einer Matrix N durch. Addiert das K-fache der I-ten Zeile zur J-ten Zeile.
Gibt die resultierende Matrix zurück.
Speicherort: $contrib\eisenmann\bm.pkg
benötigte Funktionen: ----
EMatExch
Syntax:
EMatExch(N:MAT, I:INT, J:INT):MAT
Beschreibung:
Führt elementare Zeilenoperation auf
einer Matrix N durch. Vertauscht die I-te und J-te Zeile. Gibt die
resultierende Matrix zurück.
Speicherort: $contrib\eisenmann\bm.pkg
benötigte Funktionen: ----
EMatMult
Syntax:
EMatMult(N:MAT, K:INT, I:INT):MAT
Beschreibung:
Führt elementare Zeilenoperation auf
einer Matrix N durch. Multipliziert die I-te Zeile mit K. Gibt die resultierende Matrix zurück.
Speicherort: $contrib\eisenmann\bm.pkg
benötigte Funktionen: ----
GBM
Syntax:
GBM(W:LIST, M:MAT):LIST
Beschreibung:
Allgemeiner Buchberger-Möller Algorithmus gemäß Abbot/Kreuzer/Robbiano, "Computing Zero-Dimensional Schemes" (verfügbar unter www.physik.uni-regensburg.de/~krm03530/ )
W ist eine Liste von Listen, die Vektoren repräsentieren, M eine Matrix von Multiplikations-Matrizen. Die Funktion liefert eine Liste [G, E] zurück, wobei G eine Liste von Polynomen ist, die eine Gröbner Basis bilden, und E eine Liste von Separatoren ist.
Speicherort: $contrib\eisenmann\bm.pkg
benötigte Funktionen: Mult
GetBasis
- langsam! besser CoCoA-interne Funktion 'QuotientBasis' verwenden -
Syntax:
GetBasis(I:IDEAL):LIST
Beschreibung:
Liefert eine Liste von Monomen, die eine Basis
von R/I als Vektorraum repräsentieren. I muß 0-dimensionales
Ideal sein.
Speicherort: $contrib\eisenmann\cm.pkg
benötigte Funktionen: ----
GetBasisWithSocs
Syntax:
GetBasisWithSocs(I:IDEAL, D:INT):LIST
Beschreibung:
I muss 1-dimensionales homogenes Ideal sein, wobei D eine Unbestimmte angibt, die nicht im Radikalideal des Leittermideals von I liegt bzgl. der aktuellen Termordnung (D=1 bedeutet, dass keine Potenz der ersten Unbestimmten in LT(I) liegt). Liefert eine Liste von zwei Listen von Monomen, getrennt nach Sockelmonomen (zweite Liste) und anderen (erste Liste), die eine Basis des homogenen Koordinatenrings R/I als K-Vektorraum repräsentieren.
Speicherort: $contrib\eisenmann\cm.pkg
benötigte Funktionen: ----
GetRegSeq
Syntax:
GetRegSeq(Var P):LIST
wobei P entweder 1-dimensionales homogenes Ideal oder
nulldimensionales Schema (RECORD
"Schema") ist
Beschreibung:
Liefert eine reguläre Sequenz der Länge (Anzahl der Unbestimmten)-1 im Ideal P bzw. im homogenen Verschwindungsideal des nulldimensionalen Schemas P.
Speicherort: $contrib\eisenmann\cb.pkg
benötigte Funktionen: ----
GetSocs
Syntax:
GetSocs(I:IDEAL):LIST
Beschreibung:
Liefert eine Liste der Sockelmonome von R/I.
I muß 0-dimensionales Ideal sein.
Speicherort: $contrib\eisenmann\cm.pkg
benötigte Funktionen: ----
GetSyzygies
Syntax:
GetSyzygies(A:IDEAL):LIST
Beschreibung:
Liefert Syzygien des kanonischen Moduls bzgl.
des 1-dimensionalen homogenen Ideals A (A schneidet nicht die durch [letzte Unbestimmte]=0 gegebene Hyperebene). Die Syzygien bilden Erzeugendensystem des Syzygienmoduls, allerdings kein minimales. Diese Funktion sollte nicht direkt aufgerufen werden, sondern nur über die Funktion 'CanonicalModule'.
Speicherort: $contrib\eisenmann\cm.pkg
benötigte Funktionen: ----
HilbertOfCanonicalModule
Syntax:
HilbertOfCanonicalModule(L:LIST):TAGGED("$contrib/eisenmann/cm.HilbertOfCanonicalModule")
wobei L eine von der Funktion 'CanonicalModule' zurückgegebene Liste ist
Beschreibung:
Gibt die Hilbertfunktion eines kanonischen Moduls an. Die Berechnung erfolgt über die Darstellung des kanonischen Modul durch die Funktion 'CanonicalModule'. Durch Vergleich mit der Hilbertfunktion des ursprünglichen nulldimensionalen Schemas lässt sich so die Funktion 'CanonicalModule' zum Teil kontrollieren.
Speicherort: $contrib\eisenmann\cm.pkg
benötigte Funktionen: ----
InverseMatrix
Syntax:
InverseMatrix(M:MAT):MAT
Beschreibung:
Gibt die zu M inverse Matrix zurück, vorausgesetzt M ist invertierbar.
Speicherort: $contrib\eisenmann\bm.pkg
benötigte Funktionen: EMatComb, EMatExch, EMatMult
IsCayleyBach
Syntax:
IsCayleyBach(Var P):BOOL
wobei P entweder eine Liste von projektiven Punkten (erste Koordinate ungleich Null!) eines reduzierten nulldimensionalen Schemas oder ein 1-dimensionales homogenes Ideal (darf die durch [erste Unbestimmte]=0 definierte Hyperebene nicht schneiden) oder RECORD "Schema" ist.
Beschreibung:
Testet, ob das Ideal P bzw. das homogene Verschwindungsideal des durch P definierten Schemas die
Cayley-Bacharach Eigenschaft besitzt.
Speicherort: $contrib\eisenmann\cb.pkg
benötigte Funktionen: ColonOfDeg, GetRegSeq
IsUniform
Syntax:
IsUniform(Var P, A):BOOL
wobei P entweder eine Liste von Punkten
eines reduzierten Schemas ist oder RECORD
"Schema"
A ist entweder eine ganze Zahl (INT) oder eine Liste von zwei ganzen Zahlen ([A1:INT, A2:INT])
Beschreibung:
Funktioniert derzeit nur für reduzierte Schemata! Testet, ob das durch P gegebene Schema A-uniform ist, bzw. falls A eine Liste von zwei ganzen Zahlen A1 und A2 ist, ob das Schema (A1,A2)-uniform ist.
Speicherort: $contrib\eisenmann\uni.pkg
benötigte Funktionen: IsUniform_1, IsUniform_2
IsUniform_1
Syntax:
IsUniform_1(Var P, D:INT):BOOL
wobei P entweder eine Liste von Punkten
eines reduzierten Schemas ist oder RECORD
"Schema"
Beschreibung:
Funktioniert derzeit nur für reduzierte Schemata! Testet, ob das durch P gegebene Schema D-uniform ist. Kombiniert dabei die beiden Routinen IsUniformSmall und IsUniformSpecial. Wird von 'IsUniform' aufgerufen, falls 'IsUniform' als zweiter Parameter eine ganze Zahl übergeben wurde.
Speicherort: $contrib\eisenmann\uni.pkg
benötigte Funktionen: IsUniformSmall, IsUniformSpecial
IsUniform_2
Syntax:
IsUniform_2(Var P, I:INT, J:INT):BOOL
wobei P entweder eine Liste von Punkten
eines reduzierten Schemas ist oder RECORD
"Schema"
Beschreibung:
Funktioniert derzeit nur für reduzierte Schemata! Testet, ob das durch P gegebene Schema (I,J)-uniform ist. Wird von 'IsUniform' aufgerufen, falls 'IsUniform' als zweiter Parameter eine Liste von zwei ganzen Zahlen übergeben wurde.
Speicherort: $contrib\eisenmann\uni.pkg
benötigte Funktionen: IsUniform, IsUniformSpecial_2, Liaison
IsUniformSmall
Syntax:
IsUniformSmall(Var P:
RECORD Scheme, D:INT):BOOL
Beschreibung:
Funktioniert derzeit nur für reduzierte Schemata! Testet, ob das durch P gegebene reduzierte Schema D-uniform ist. Eignet sich nur für kleine D und sollte nur über die Routine 'IsUniform' aufgerufen werden.
Speicherort: $contrib\eisenmann\uni.pkg
benötigte Funktionen: GetBasisWithSocs
IsUniformSpecial
Syntax:
IsUniformSpecial(Var P:
RECORD Scheme, D:INT):BOOL
Beschreibung:
Funktioniert derzeit nur für reduzierte Schemata! Testet, ob das durch P gegebene reduzierte Schema X ein (deg(X)-Hilbert(D))-uniformes Schema ist (Hilbert = Hilbertfunktion von X). Diese Funktion sollte nur über 'IsUniform' aufgerufen werden mit entsprechendem zweiten Parameter deg(X)-Hilbert(D).
Speicherort: $contrib\eisenmann\uni.pkg
benötigte Funktionen: CanonicalModule
IsUniformSpecial_2
Syntax:
IsUniformSpecial_2(Var P:
RECORD Scheme, D:INT):BOOL
Beschreibung:
Funktioniert derzeit nur für reduzierte Schemata! Testet, ob das durch P gegebene reduzierte Schema X ein (deg(X)-Hilbert(D),D)-uniformes Schema ist (Hilbert = Hilbertfunktion von X). Diese Funktion sollte nur über 'IsUniform' aufgerufen werden mit der Liste [deg(X)-Hilbert(D),D] als zweiten Parameter .
Speicherort: $contrib\eisenmann\uni.pkg
benötigte Funktionen: CanonicalModule
Liaison
Syntax:
Liaison(Var P:
RECORD Scheme):BOOL
Beschreibung:
Testet, ob ein übergebenes (Delta_X, Sigma_X)-uniformes Schema auch (Delta_X+1, Sigma_X-1)-uniform ist. Diese Funktion sollte nicht direkt, sondern nur über die Funktion 'IsUniform' aufgerufen werden.
Speicherort: $contrib\eisenmann\codes.pkg
benötigte Funktionen: ColonOfDeg, GetRegSeq
Mult
Syntax:
Mult(M:MAT, V:VECTOR):VECTOR
Beschreibung:
Liefert das Produkt einer Matrix M mit einem
Vektor V. Dabei muss Anzahl der Spalten von M gleich der Länge
von V sein.
Speicherort: $contrib\eisenmann\bm.pkg
benötigte Funktionen: ----
PBM
Syntax:
PBM(P:LIST):LIST
Beschreibung:
Projektiver Buchberger-Möller-Algorithmus;
nimmt als Argument eine Liste P von projektiven Punkten und liefert eine Liste G von Polynomen, die eine Gröbner Basis des homogenen Verschwindungsideals von P bilden.
Speicherort: $contrib\eisenmann\bm.pkg
benötigte Funktionen: StoppingCriterion
RadicalOfZerodim
Syntax:
RadicalOfZerodim(I:IDEAL):IDEAL
Beschreibung:
Berechnet das Radikalideal eines nulldimensionalen Ideals. Nicht im allgemeinen Funktionsumfang enthalten, da sie für Uniformitätsberechnungen nicht benötigt wird! Muss durch Ausführen der Datei "radicalofzerodim.coc" geladen werden.
Speicherort: $contrib\eisenmann\radicalofzerodim.coc
benötigte Funktionen: ----
ReedMullerMinimalDistance
Syntax:
ReedMullerMinimalDistance(M:MAT):INT
ReedMullerMinimalDistance(P, J:INT):INT
wobei P entweder eine Liste von Punkten
eines reduzierten Schemas ist oder RECORD
"Schema"
Beschreibung:
Die erste Version liefert den Minimalabstand des durch die Matrix M erzeugten linearen Codes (Zeile = Codewort). Dabei darf die erste Zeile keine Nulleinträge enthalten und die Matrix darf keine identischen Spalten enthalten.
In der zweiten Version liefert die Funktion den Minimalabstand des Reed-Muller-Codes der J-ten Ordnung zu dem durch P gegebenen reduzierten nulldimensionalen Schema. Die erste Koordinate der Punkte des Trägers zum gegebenen Schema muss ungleich 0 sein.
Speicherort: $contrib\eisenmann\codes.pkg
benötigte Funktionen: ReedMullerMinimalDistance1
ReedMullerMinimalDistance1
Syntax:
ReedMullerMinimalDistance1(P, J:INT):INT
wobei P entweder eine Liste von Punkten
eines reduzierten Schemas ist oder RECORD
"Schema"
Beschreibung:
Liefert den Minimalabstand des Reed-Muller-Codes der J-ten Ordnung zu dem durch P gegebenen reduzierten nulldimensionalen Schema. Die erste Koordinate der Punkte des Trägers zum gegebenen Schema muss ungleich 0 sein.
Speicherort: $contrib\eisenmann\codes.pkg
benötigte Funktionen: IsUniform, IsUniformSpecial_2, Liaison
RegSeqTest
Syntax:
RegSeqTest(F:LIST):BOOL
Beschreibung:
Testet die Polynome der Liste F, ob sie eine
reguläre Folge bilden.
Speicherort: $contrib\eisenmann\cb.pkg
benötigte Funktionen: ----
StoppingCriterion
Syntax:
StoppingCriterion(Terms:LIST, E:INT):BOOL
Beschreibung:
Entscheidet, ob die zu einem gewissen Zeitpunkt in 'PBM' berechnete Gröbner Basis G bereits das gesuchte homogene Verschwindungsideal erzeugt.
Speicherort: $contrib\eisenmann\bm.pkg
benötigte Funktionen: ----
--- END OF LIST ---