Prufer domains are non-Noetherian analogues of Dedekind domains. That is integral domains in which every finitely generated ideal is invertible. This implementation is mainly based on:
http://hlombardi.free.fr/liens/salouThesis.pdf
- class IntegralDomain a => PruferDomain a where
- calcUVW :: a -> a -> (a, a, a)
- propCalcUVW :: (PruferDomain a, Eq a) => a -> a -> Bool
- propPruferDomain :: (PruferDomain a, Eq a) => a -> a -> a -> Property
- calcUVWT :: PruferDomain a => a -> a -> (a, a, a, a)
- propCalcUVWT :: (PruferDomain a, Eq a) => a -> a -> Bool
- fromUVWTtoUVW :: PruferDomain a => (a, a, a, a) -> (a, a, a)
- computePLM_PD :: (PruferDomain a, Eq a) => Ideal a -> Matrix a
- invertIdeal :: (PruferDomain a, Eq a) => Ideal a -> Ideal a
- intersectionPD :: (PruferDomain a, Eq a) => Ideal a -> Ideal a -> Ideal a
- intersectionPDWitness :: (PruferDomain a, Eq a) => Ideal a -> Ideal a -> (Ideal a, [[a]], [[a]])
- solvePD :: (PruferDomain a, Eq a) => Vector a -> Matrix a
Documentation
class IntegralDomain a => PruferDomain a whereSource
Prufer domain
(BezoutDomain a, Eq a) => PruferDomain a | Bezout domain -> Prfer domain |
PruferDomain ZSqrt5 | |
PruferDomain EllipticCurve |
propCalcUVW :: (PruferDomain a, Eq a) => a -> a -> BoolSource
Property specifying that: au = bv and b(1-u) = aw
propPruferDomain :: (PruferDomain a, Eq a) => a -> a -> a -> PropertySource
calcUVWT :: PruferDomain a => a -> a -> (a, a, a, a)Source
Alternative characterization of Prufer domains, given a and b compute u, v, w, t such that:
ua = vb && wa = tb && u+t = 1
propCalcUVWT :: (PruferDomain a, Eq a) => a -> a -> BoolSource
fromUVWTtoUVW :: PruferDomain a => (a, a, a, a) -> (a, a, a)Source
Go back to the original definition (yes the name is stupid :P).
computePLM_PD :: (PruferDomain a, Eq a) => Ideal a -> Matrix aSource
Compute a principal localization matrix for an ideal in a Prufer domain.
invertIdeal :: (PruferDomain a, Eq a) => Ideal a -> Ideal aSource
Ideal inversion. Given I compute J such that IJ is principal. Uses the principal localization matrix for the ideal.
intersectionPD :: (PruferDomain a, Eq a) => Ideal a -> Ideal a -> Ideal aSource
intersectionPDWitness :: (PruferDomain a, Eq a) => Ideal a -> Ideal a -> (Ideal a, [[a]], [[a]])Source
Compute the intersection of I and J by:
(I J)(I + J) = IJ => (I J)(I + J)(I + J)' = IJ(I + J)'