IntegralClosure

Contents

Description

Dieses Modul stellt Ganzheitsringe zur Verfuegung: Zu einem RingMorphism m ist IC m der Ring derjenigen Elemente von Codomain m, welche ueber Domain m ganz sind, also eine normierte Polynomgleichung mit Koeffizienten aus Domain m erfuellen.

Synopsis

Typen

data IC m where

Der Typ der Elemente des Ganzheitsrings des Ringmorphismus m. Ein solches ist gegeben durch eine Zahl des Zielrings und einem normierten Polynom mit Koeffizienten des Quellrings des Morphismus, welches die Zahl als Nullstelle besitzt.

Nun ist die zu einem Element gehoerige Ganzheitsgleichung natuerlich nicht eindeutig bestimmt, daher ist die hier gewaehlte Darstellung nicht eindeutig. Man koennte sogar argumentieren, dass die Implementierung hier die mathematische Definition nicht treu abbildet. Denn diese sagt ja nur, dass es zu Elementen des Ganzheitsrings jeweils eine Ganzheitsgleichung gibt, nicht aber, dass Elemente des Ganzheitsrings durch Paare von Zahlen und zugehoerigen Ganzheitsgleichungen repraesentiert werden.

(Eine moegliche Alternativdefinition waere, den Typ von polynomial monadisch zu waehlen, damit in der Bestimmung der zugehoerigen Ganzheitsgleichung beliebige Nebeneffekte moeglich sind.)

Die Show-Instanz respektiert nicht Gleichheit, zwei gleiche Zahlen koennen also verschieden formatiert werden.

Constructors

MkICRingMorphism m ⇒ Codomain m → NormedPoly (Domain m) → IC m 

numberRingMorphism m ⇒ IC m → Codomain m

Funktionen

fromBaseRingMorphism m ⇒ Domain m → IC m

Liftet Elemente x des Quellrings in den Ganzheitsring, mit der trivialen Ganzheitsgleichung X - x als Zeuge der Ganzheit.

eval ∷ (RingMorphism m, HasAnnihilatingPolynomials (Domain m), Eq (Domain m)) ⇒ IC m → Poly (Domain m) → IC m

Wertet ein Polynom mit Koeffizienten im Quellring in einem Element des Ganzheitsring aus. Semantisch nicht von der Spezifikation

 eval x f = Poly.eval x (fmap fromBase f)

zu unterscheiden, aber durch Verwendung von evalAnnihilator schneller.

Hilfsfunktionen (nur intern verwendet)

sumAnnihilator ∷ (Ring a, HasAnnihilatingPolynomials a) ⇒ NormedPoly a → NormedPoly a → NormedPoly a

Bestimmt zu zwei gegebenen Ganzheitsgleichungen f (eines Elements x) und g (eines Elements y) eine, welche die Summe x + y als Nullstelle besitzt.

Dafuer wird die R-Algebra R[x,y] als R-Modul betrachtet, von dem das Erzeugendensystem x^i y^j bekannt ist, wobei i und j zwischen 0 (eingeschlossen) und dem Grad von f bzw. g (ausgeschlossen) laufen.

Die Abbildung Multiplikation mit (x+y) besitzt dann ein annihilierendes Polynom; dieses berechnen wir.

prodAnnihilator ∷ (Ring a, HasAnnihilatingPolynomials a) ⇒ NormedPoly a → NormedPoly a → NormedPoly a

Bestimmt zu zwei gegebenen Ganzheitsgleichungen f (eines Elements x) und g (eines Elements y) eine, welche das Produkt x y als Nullstelle besitzt. Das Vorgehen ist das gleiche wie bei sumAnnihilator.

evalAnnihilator ∷ (Ring a, Eq a, HasAnnihilatingPolynomials a) ⇒ Poly a → NormedPoly a → NormedPoly a

Bestimmt zu einer gegebenen Ganzheitsgleichung f (eines Elements x) und eines Polynoms p (welches nicht normiert sein muss) eine Ganzheitsgleichung fuer das Element p(x).

Dies koennte man natuerlich einfach durch geeignetes Einsetzen von x in p und sumAnnihilator sowie prodAnnihilator erreichen, aber die Funktion hier ist wesentlich effizienter: Sie nutzt die R-Algebra R[x], die unabhaengig von dem Grad von p das bekannte Erzeugendensystem x^i, wobei i von 0 (einschliesslich) bis zum Grad von f laeuft (ausschliesslich, besitzt.

Somit ist der Grad des ermittelten Polynoms dann hoechstens (<=) der von f.

verifyPolynomialRingMorphism m ⇒ IC m → Codomain m

Setzt ein Element des Ganzheitsrings im Zielring in seine Ganzheitsgleichung ein. Nuetzlich in Tests, um sicherzustellen, dass die mitgefuehrte Gleichung auch in der Tat eine Ganzheitsgleichung fuer das Element ist.

Beispiele

goldenRatioIC QinR

Konstante fuer den goldenen Schnitt.

sqrt2IC QinR

Konstante fuer die Quadratwurzel aus 2.

QuickCheck