finite dimensional submodules of infinite dimensional ones

38 views
Skip to first unread message

Reimundo Heluani

unread,
Jun 9, 2020, 5:43:04 PM6/9/20
to sage-...@googlegroups.com
I am trying to reuse the code already in place in combinat/freemodule and
modules/with_basis/subquotients to construct a finite dimensional submodule of
an infinite dimensional one. I think that there are places where the basis of
the ambient space is assumed to be a list without needing it. The following is
a minimal example of what I mean:

sage: RPT = PartitionTuples(level=4)
sage: V = CombinatorialFreeModule(QQ, RPT)
sage: M = V.submodule([V.an_element()], already_echelonized=True)
sage: M.lift(M.an_element())
Traceback (most recent call last):
...
NotImplementedError: cannot list an infinite set

However this can be forced into working by simply:

sage: V._rank_basis = RPT.rank
sage: V._order = RPT.rank
sage: M.lift(M.an_element())
2*B[([], [], [], [])] + 6*B[([], [1], [], [])] + 2*B[([], [1], [2], [3])] + 4*B[([1], [], [], [])]

The exception is being raised because V._order is set to None and the first
call to get_order simply forces it to be self.basis().keys().list() which
fails on an infinite set.

A call to set_order() would also fail, because it sets correctly self._order
but then it calls rank_from_list on it to produce self._rank_basis.

I haven't tested much but it seems that just setting these two orders
correctly in the infinite set I can produce a working finite dimensional
submodule without trouble. This must be something that has arisen before, so
perhaps someone here can point me to some part of the library which deals with
these situations?

Best,

R.

signature.asc

Matthias Koeppe

unread,
Jun 9, 2020, 6:35:52 PM6/9/20
to sage-devel

Reimundo Heluani

unread,
Jun 9, 2020, 6:41:00 PM6/9/20
to sage-...@googlegroups.com


On June 9, 2020 7:35:51 PM GMT-03:00, Matthias Koeppe <matthia...@gmail.com> wrote:
>See https://trac.sagemath.org/ticket/19448
>

Ohh wow! That's been active really recently! Thanks, I'll merge the ticket into my branch.

R.
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

Reimundo Heluani

unread,
Jun 12, 2020, 8:07:33 AM6/12/20
to sage-...@googlegroups.com
On Jun 09, Matthias Koeppe wrote:
>See [1]https://trac.sagemath.org/ticket/19448
>
With the patch in this ticket I find this:

sage: V = CombinatorialFreeModule(QQ, Partitions())
sage: M = V.submodule([V.an_element()])
sage: M.reduce(V.an_element())
0

so far so good.

sage: v = V([3,2,1]); v
B[[3, 2, 1]]
sage: M.reduce(v)
Traceback (most recent call last):
...
ValueError: tuple.index(x): x not in tuple

Without this patch but forcing the orders as in my previous e-mail this
worked:

sage: P = Partitions()
sage: V = CombinatorialFreeModule(QQ, P)
sage: V._order = P.rank
sage: V._rank_basis = P.rank
sage: M = V.submodule([V.an_element()], already_echelonized=True)
sage: v = V([3,2,1]); v
B[[3,2,1]]
sage: M.reduce(v)
B[[3,2,1]]
sage: M.reduce(V.an_element())
0

So I suppose the quotient could be implemented in some cases. Is the above
ValueError expected with this patch?

Best,

R.
>--
>You received this message because you are subscribed to the Google Groups
>"sage-devel" group.
>To unsubscribe from this group and stop receiving emails from it, send an email
>to [2]sage-devel+...@googlegroups.com.
>To view this discussion on the web visit [3]https://groups.google.com/d/msgid/
>sage-devel/1a6a6a07-99f7-4d42-8516-6ba212088ca1o%40googlegroups.com.
>
>References:
>
>[1] https://trac.sagemath.org/ticket/19448
>[2] mailto:sage-devel+...@googlegroups.com
>[3] https://groups.google.com/d/msgid/sage-devel/1a6a6a07-99f7-4d42-8516-6ba212088ca1o%40googlegroups.com?utm_medium=email&utm_source=footer

signature.asc
Reply all
Reply to author
Forward
0 new messages