Discussion

Tasks

  1. Write categories QuasiDVRs, MatrixAlgebrasOverQuasiDVRs, FreeModulesOverQuasiDVRs. A quasi-DVR is a local ring equipped with a prime element defining a valuation map to \ZZ \cup \{\infty\} so that 0 is the only element of infinite valuation. Artinian rings and DVRs are examples.

  2. Write LUP_decomposition in MatrixAlgebrasOverQuasiDVRs.ElementMethods.

  3. Define precision classes for vectors (e.g. flat, jagged, concave, submodule) and for matrices (e.g. flat, jagged, planar, column (submodule of codomain), row (submodule of domain))
  4. Define a vector class that separates data from precision. The approximation could be a vector over another (finite) QuasiDVR or over ZZ for example. Override vector operations to compute an approximation separately from the precision of the answer (mostly arithmetic).

  5. Define a matrix class that separates data from precision. The appoximation could be a matrix over another (finite) QuasiDVR or over ZZ for example. Override necessary matrix methods (quite a few).