ModMonic

3 views
Skip to first unread message

Waldek Hebisch

unread,
Jul 9, 2023, 7:18:59 PM7/9/23
to fricas...@googlegroups.com
I wonder what to do with ModMonic? AFAICS there are at least
26 exported but unimplemented operations. In particular,
ModMonic export UnivariatePolynomialCategory. This is
mathematically incorrect because generator of univariate
polynomials is transcendental over base ring, while in
ModMonic generator is algebraic.

ModMonic have limited use and we probably could give it
a different type that exports less operations.
--
Waldek Hebisch

Waldek Hebisch

unread,
Jul 10, 2023, 1:31:29 PM7/10/23
to fricas...@googlegroups.com
After little investigation it looks like most resonable
category could be Join(CommutativeRing, Algebra(R))
plus specific exports. Another possibility is
MonogenicAlgebra(R, Rep) with specific exports. The
first one requires removal of 3 operations, that is 'exquo',
'recip' and 'divide'. However those operations are exported
only because when R is a Field also MonogenicAlgebra(R, Rep)
claims to be a Field. And ModMonic is a field only if R is a
field and modulus polynomial is irreducible. ddfact.spad uses
ModMonic with polynomial which is _not_ irreducible,
so MonogenicAlgebra was too much.

When we declare type as Join(CommutativeRing, Algebra(R))
plus specific exports, and remove unimplemented 'An' from
specific exports there are only 3 undefined operations:
characteristic, index and lookup.

Both changes require little adjustment to 'ffdoms.spad'
and require R to be a CommutaiveRing.

--
Waldek Hebisch

Waldek Hebisch

unread,
Jul 11, 2023, 4:43:14 PM7/11/23
to fricas...@googlegroups.com
I have now commited bunch of improvements to ModMonic.
However, ModMonic is a "mutable domain". It seems that
the whole concept of "mutable domain" is problematic.
Namely at least some places in FriCAS assume that they
can re-evaluate type expression and get equivalent
type. But this property is invalid for ModMonic.

One solution could pass modulus as parameter to
constructor (like in case of SimpleAlgebraicExtension).
Or like ModularRing set modulus when creating elements
and check that operations use consistent moduli.

OTOH after one or the other change ModMonic would be
just little variation of one of the above, so
essentially redundant.

--
Waldek Hebisch
Reply all
Reply to author
Forward
0 new messages