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
Better handling of subspace construction in pushout #16507
Comments
Commit: |
comment:2
I think this is good, but Simon/Nicolas, could I get a second opinion on this? |
Changed keywords from pushout subspace to pushout subspace, sd59 |
comment:4
What about the discussion we had on sage-devel / the example 1.1 + x^2 I liked the suggestion of doing a coercion check for exceptional cases. |
comment:5
Replying to @jjermann:
I was planning to come back to this, but I'm currently slightly busy (moving house)...
Yes, but as you say it is not a bad thing; in the end we have to apply the "merged" functor anyway, so the consequence of this coercion checking is just that the logic becomes a little bit more complicated. If you feel like implementing this, feel free to go ahead; I'm not sure if I'll have enough time very soon. |
Replying to @pjbruin:
I hope this will not end up with a pullback construction. What do you mean by "exactly one of the two constructions is |
Changed branch from u/pbruin/16507-pushout_coercion_reversed to u/robertwb/ticket/16507 |
Changed author from Peter Bruin to Peter Bruin, Robert Bradshaw |
This comment has been minimized.
This comment has been minimized.
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:11
Replying to @simon-king-jena:
It definitely won't; this algorithm is far from being symmetric.
In that case you would end up with some object admitting coercion maps from both original objects, but the idea is to try to get something as close as possible to the "real" push-out. Hopefully Robert's list of examples makes it clear that one shouldn't just throw away all "coercion-reversed" constructions. |
comment:13
Replying to jpflori (#10513):
It's a bit annoying to document member variables, one would have to do it in the class docstring. Anyway, I'll try if I can do this in a reasonable way. |
comment:14
I ended up moving this explanation to the docstring of |
Changed branch from u/robertwb/ticket/16507 to u/pbruin/16507-pushout_coercion_reversed |
comment:15
Looks better to me! |
Reviewer: Jean-Pierre Flori |
Changed branch from u/pbruin/16507-pushout_coercion_reversed to |
When taking a pushout of two modules in the case where the construction of exactly one of them involves a subspace construction, the result does not have a coercion map from the other object:
The explanation is that for the other currently existing constructions
F
, the resultF(X)
of applying the construction toX
has a coercion map fromX
, but for the subspace construction,F(X)
only has a coercion map toX
.This ticket addresses this by equipping the class
ConstructionFunctor
with an attributecoercion_reversed
, which isFalse
by default; if it isTrue
for a constructionF
, then the pushout of two objects omitsF
in the case where (at a given step of constructing the pushout) including it would not yield a coercion to the final domain. Of course, we setcoercion_reversed = True
for the subspace construction.No change is necessary in the case where both constructions involve
F
, since this situation should be taken care of byF.merge()
. This is indeed true for the subspace construction, whereF.merge()
takes the sum of the two subspaces.The situation described above can be viewed as the case where one of the two constructions involves a "trivial" application of
F
, i.e. with the subspace equal to the whole space. Hence we should interpret our situation as a case where the effect ofmerge()
with one trivial argument is desired.In the above example, this strategy will cause
P
to be equal toQQ^2
, as might be expected.CC: @simon-king-jena @nthiery @jpflori
Component: categories
Keywords: pushout subspace, sd59
Author: Peter Bruin, Robert Bradshaw
Branch/Commit:
1ef05f2
Reviewer: Jean-Pierre Flori
Issue created by migration from https://trac.sagemath.org/ticket/16507
The text was updated successfully, but these errors were encountered: