-
-
Notifications
You must be signed in to change notification settings - Fork 453
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Basis-dependent isomorphism from FiniteRankFreeModule to an object in the category ModulesWithBasis #30094
Comments
This comment has been minimized.
This comment has been minimized.
comment:2
Also it seems various maps are missing.
|
comment:4
These are incompatible objects since My 2 cents for the error reported in the ticket is to first check that the object is not in the category. The other option is to lift the |
comment:5
Replying to @tscrim:
Shouldn't there be a map in one direction that forgets the distinguished basis? |
comment:6
Replying to @mkoeppe:
No, because where would you send the point |
comment:7
Ok, I feel we had this discussion before |
comment:8
Should |
comment:9
Replying to @mkoeppe:
No, I don't think it should. The identity map (like any other automorphism) is a basis independent object. |
comment:10
Replying to @mjungmath:
I might even go further to say that it would not be the identity map, but an isomorphism of free modules. We have to be careful about distinguishing things up to equality and up to isomorphism. For example, if I have |
comment:11
Replying to @tscrim:
Of course, that's what I meant. |
comment:12
Replying to @tscrim:
In my question above, this would be a method of |
comment:13
Replying to @mkoeppe:
You were asking for a map from |
comment:14
Replying to @tscrim:
I of course agree that one may implement a method in Coming back to the issue mentioned in the ticket title and description, I would say that the problem arises because "vector spaces" as they are implemented in Sage are not really vector spaces in all their generality but only Cartesian powers |
comment:15
Replying to @egourgoulhon:
OK, I think we are getting closer. When you say, '"vector spaces" as they are implemented in Sage', I assume you mean the ones implemented in What I was asking for in comment 8 is, given a basis, a map from a |
comment:16
Replying to @tscrim:
Well, yes. It is a special kind of automorphism. However, I wouldn't see it as an isomorphism between any two free modules of the same rank, in case this is what you are referring to. Replying to @tscrim:
I am not sure what you mean with "the span of the basis elements". This does not make any sense to me because the span is always the free module again. Anyway, I would see an instance of |
comment:17
Replying to @tscrim:
Agreed.
Sounds good. Who goes for it? |
comment:18
Replying to @mkoeppe:
Yes.
Yes, this is the basis-dependent isomorphism I was referring to comment:14, but my concern, and that of Travis if I understand correctly, is that such an isomorphism cannot be used for a coercion, because it is not canonical (by definition, it depends on a choice of basis). |
comment:20
Replying to @egourgoulhon:
I've pushed a rough implementation of this to the ticket. Sure, I don't need this to be a coercion. Just a module morphism. New commits:
|
Commit: |
comment:21
Replying to @mjungmath:
The question is what does this class represent:
These are very different objects. One is finite, one is infinite (well, |R|n, where R is the base ring). Since you want to think of it as 1, then you are saying there should not be a morphism. However, most of the points of the free module should not be elements of this parent. The actual implementation is really treating it like 2, and its elements are the points of the free module represented using the chosen basis. I like the proposed method overall. I have some suggestions: 1 - Change the name to something like if codomain.dimension() != self.dimension():
raise ValueError
B = list(codomain.basis())
def function(x):
return codomain.sum(x[basis, i] * B[i] for i in self.irange()) This should be implementation independent (if it is not, then it is a bug IMO). |
comment:22
Replying to @tscrim:
I think it's clear that 1 is intended:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:24
Ah, right. Yes, it is clear that it is 1. I got myself confused. |
comment:25
Replying to @sagetrac-git:
I must agree Eric in comment:14, I don't see the use of such a method I see no problem in implementing the coercion on the level of modules right away. There is no need for such method either in this case. The vector space I have to admit, I am not sure what's the problem is we're still discussing; apart from the error reported in the description. Is it still all about comment:2? As reported in this ticket, we want to coerce the free modules themselves and not their elements. |
comment:54
I don't think the prefix is even necessary, but I can live with that. |
Reviewer: Michael Jung, Matthias Koeppe, ... |
Changed reviewer from Michael Jung, Matthias Koeppe, ... to Michael Jung, Matthias Koeppe, Eric Gourgoulhon |
comment:56
LGTM. Thanks! |
comment:58
Replying to @egourgoulhon:
I think, the independence should be the other way around, right Matthias? |
comment:59
Replying to @mjungmath:
No, if the code in this ticket makes use of #30180's code, the dependency shall be set here to #30180. |
comment:60
Replying to @egourgoulhon:
This code works independently of #30180 and I don't see any snippets from #30180 used here. |
comment:61
Both of you are right. |
comment:62
Thanks to the speedy review of #30180, I will use it now to simplify the code on the present ticket. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
Dependencies: #30180 |
comment:65
Morally green patchbot. |
Changed reviewer from Michael Jung, Matthias Koeppe, Eric Gourgoulhon to Michael Jung, Matthias Koeppe, Eric Gourgoulhon, Travis Scrimshaw |
comment:66
Thanks for the update! |
comment:67
Thanks! |
Changed branch from public/tensor/basis_dependent_isomorphism_free_modules to |
(This ticket has been narrowed to the topic mainly discussed in the comments. The topic originally in title and ticket description has been moved to #30174)
There are multiple incompatible protocols for dealing with bases of a free module in Sage (#19346).
One such protocol is defined by the category
ModulesWithBasis
.CombinatorialFreeModule
is one of the parent classes in this category.Another such protocol is defined by the parent class
FiniteRankFreeModule
, which is in the categoryModules
.A
FiniteRankFreeModule
can be equipped with a finite list of bases (each represented by an instance ofFreeModuleBasis
), none of which are considered distinguished.FiniteRankFreeModule
s are unique parents; the operation of equipping aFiniteRankFreeModule
does not change the identity of the parent.We define a method
FiniteRankFreeModule. isomorphism_with_fixed_basis
that establishes, given a basis, an isomorphism with aCombinatorialFreeModule
(and thus a parent in the categoryModulesWithBasis
.Depends on #30180
CC: @egourgoulhon @tscrim @mjungmath
Component: categories
Author: Matthias Koeppe, Michael Jung
Branch/Commit:
8a800cc
Reviewer: Michael Jung, Matthias Koeppe, Eric Gourgoulhon, Travis Scrimshaw
Issue created by migration from https://trac.sagemath.org/ticket/30094
The text was updated successfully, but these errors were encountered: