Dieses Modul stellt einfache Ring- und Koerpererweiterungen der Form R[X]\(f) bereit. Das Polynom f wird ausschliesslich im Typ mitgefuehrt und befindet sich nicht auf Wertebene; das verhindert unabsichtliches Vermischung von Elementen verschiedener Quotientenringe.
- class Ring (BaseRing p) ⇒ ReifyPoly p
- class ReifyPoly p ⇒ ReifyIrreduciblePoly p
- data SE p
- canonRep ∷ (ReifyPoly p, Field (BaseRing p)) ⇒ SE p → Poly (BaseRing p)
- adjointedRoot ∷ ReifyPoly p ⇒ SE p
- fromBase ∷ ReifyPoly p ⇒ BaseRing p → SE p
- data MinPolySqrt2
- data Qsqrt2inR
- demo ∷ IO ()
- check_SimpleExtension ∷ IO ()
Klassen fuer Polynome auf Typebene
class Ring (BaseRing p) ⇒ ReifyPoly p
Klasse fuer Typen, die Polynome auf Typebene darstellen.
Das Gegenstueck waere in Anlehnung an die ueblichen Konventionen zur
Programmierung auf Typniveau die Funktion reflectPoly
, die wir aber nicht
benoetigen und daher auch nicht implementiert haben.
class ReifyPoly p ⇒ ReifyIrreduciblePoly p
Klasse fuer Typen, die irreduzible Polynome auf Typebene darstellen.
Datentyp und Funktionen zu einfachen Erweiterungen
data SE p
Typ der Elemente der einfachen Erweiterung (simple extension) R[X]\(p).
(ReifyPoly p, Field (BaseRing p)) ⇒ Eq (SE p) | |
(ReifyPoly p, Field (BaseRing p), Show (BaseRing p)) ⇒ Show (SE p) | |
(ReifyPoly p, Arbitrary (BaseRing p)) ⇒ Arbitrary (SE p) | |
(ReifyIrreduciblePoly p, Field (BaseRing p)) ⇒ IntegralDomain (SE p) | |
ReifyPoly p ⇒ Ring (SE p) | |
(ReifyIrreduciblePoly p, Field (BaseRing p)) ⇒ Field (SE p) |
canonRep ∷ (ReifyPoly p, Field (BaseRing p)) ⇒ SE p → Poly (BaseRing p)
Bestimmt zu einem Element des Faktorrings seinen kanonischen Repraesentanten mittels Polynomdivision durch das herausgeteilte Polynom.
Da wir nicht fordern, dass der Modulus ein normiertes Polynom ist, ist diese Funktion auf solche Grundringe beschraenkt, die Koerper sind.
adjointedRoot ∷ ReifyPoly p ⇒ SE p
Liefert das Element [X] im Quotientenring R[X]\(p), also die kuenstliche Nullstelle von p.
fromBase ∷ ReifyPoly p ⇒ BaseRing p → SE p
Hebt ein Element des Grundrings in den Quotientenring hoch.
Beispiele
data MinPolySqrt2
Dummytyp, der das Minimalpolynom der Quadratwurzel aus 2, X^2 - 2, repraesentiert.
data Qsqrt2inR
Dummytyp, der die kanonische Einbettung der rationalen Zahlen in die Erweiterung Q[X]\(X^2-2) repraesentiert.
demo ∷ IO ()
QuickCheck
check_SimpleExtension ∷ IO ()