Sage: Ticket #31241: Forgetful Functors for Manifold Objects
https://trac.sagemath.org/ticket/31241
<p>
It would be nice to allow forgetful functors for manifolds. In particular:
</p>
<ul><li>differentiable manifolds -> topological manifolds
</li><li>(Pseudo-)Riemannian manifolds -> differentiable manifolds (not a category yet)
</li><li>topological manifolds -> sets (?)
</li></ul><p>
and probably even more. The last point, if getting to work somehow, might also be useful and/or should be seen in view of <a class="closed ticket" href="https://trac.sagemath.org/ticket/30832" title="enhancement: Connect RealSet to sage.manifolds (closed: fixed)">#30832</a>.
</p>
<p>
At the moment, we have the following behavior (which could be seen as a bug):
</p>
<pre class="wiki">sage: from sage.categories.functor import ForgetfulFunctor
sage: from sage.categories.manifolds import Manifolds
sage: F = ForgetfulFunctor(Manifolds(RR).Differentiable(), Manifolds(RR).Topological())
sage: M = Manifold(2, 'M')
sage: F(M)
2-dimensional differentiable manifold M
</pre>en-usSagehttps://trac.sagemath.org/chrome/site/logo_sagemath_trac.png
https://trac.sagemath.org/ticket/31241
Trac 1.1.6gh-mjungmathThu, 14 Jan 2021 17:03:06 GMTdescription changed
https://trac.sagemath.org/ticket/31241#comment:1
https://trac.sagemath.org/ticket/31241#comment:1
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/31241?action=diff&version=1">diff</a>)
</li>
</ul>
Ticketgh-mjungmathThu, 14 Jan 2021 17:03:54 GMTdescription changed
https://trac.sagemath.org/ticket/31241#comment:2
https://trac.sagemath.org/ticket/31241#comment:2
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/31241?action=diff&version=2">diff</a>)
</li>
</ul>
Ticketgh-mjungmathThu, 14 Jan 2021 17:04:41 GMTdescription changed
https://trac.sagemath.org/ticket/31241#comment:3
https://trac.sagemath.org/ticket/31241#comment:3
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/31241?action=diff&version=3">diff</a>)
</li>
</ul>
Ticketgh-mjungmathThu, 14 Jan 2021 17:05:04 GMTcc set
https://trac.sagemath.org/ticket/31241#comment:4
https://trac.sagemath.org/ticket/31241#comment:4
<ul>
<li><strong>cc</strong>
<em>tscrim</em> <em>egourgoulhon</em> <em>mkoeppe</em> added
</li>
</ul>
Ticketgh-mjungmathThu, 14 Jan 2021 17:12:43 GMTdescription changed
https://trac.sagemath.org/ticket/31241#comment:5
https://trac.sagemath.org/ticket/31241#comment:5
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/31241?action=diff&version=5">diff</a>)
</li>
</ul>
Ticketgh-mjungmathThu, 14 Jan 2021 17:36:22 GMTdescription changed
https://trac.sagemath.org/ticket/31241#comment:6
https://trac.sagemath.org/ticket/31241#comment:6
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/31241?action=diff&version=6">diff</a>)
</li>
</ul>
Ticketgh-mjungmathThu, 14 Jan 2021 17:37:11 GMTsummary changed
https://trac.sagemath.org/ticket/31241#comment:7
https://trac.sagemath.org/ticket/31241#comment:7
<ul>
<li><strong>summary</strong>
changed from <em>Forgetful Functors for Manifolds</em> to <em>Forgetful Functors for Manifold Objects</em>
</li>
</ul>
Ticketgh-mjungmathThu, 14 Jan 2021 22:18:37 GMTdescription changed
https://trac.sagemath.org/ticket/31241#comment:8
https://trac.sagemath.org/ticket/31241#comment:8
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/31241?action=diff&version=8">diff</a>)
</li>
</ul>
TickettscrimFri, 15 Jan 2021 03:08:06 GMT
https://trac.sagemath.org/ticket/31241#comment:9
https://trac.sagemath.org/ticket/31241#comment:9
<p>
I am a little hesitant to call it a bug because it still has that structure once it goes through the functor. The problem is the mutability and that you can make it leave the corresponding category. Now you could implement something specific that handles an instance of <code>Manifold</code>. Although I feel that getting something of this level of generality would be hard. I think you are probably better off implementing a mechanism in the <code>Manifold</code> class itself.
</p>
Ticketgh-mjungmathFri, 15 Jan 2021 09:01:33 GMT
https://trac.sagemath.org/ticket/31241#comment:10
https://trac.sagemath.org/ticket/31241#comment:10
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:9" title="Comment 9">tscrim</a>:
</p>
<blockquote class="citation">
<p>
I am a little hesitant to call it a bug because it still has that structure once it goes through the functor. The problem is the mutability and that you can make it leave the corresponding category. Now you could implement something specific that handles an instance of <code>Manifold</code>. Although I feel that getting something of this level of generality would be hard. I think you are probably better off implementing a mechanism in the <code>Manifold</code> class itself.
</p>
</blockquote>
<p>
Agreed. Calling that, one could make a function in <code>OpenInterval</code> returning an element of <code>RealSet</code>. But wait, the forgetful functor to sets works differently, right?
</p>
<p>
The approach I had in mind is as simple as that: new instance of the desired kind and copy charts. Where do you think may problems occour?
</p>
Ticketgh-mjungmathFri, 15 Jan 2021 10:38:32 GMT
https://trac.sagemath.org/ticket/31241#comment:11
https://trac.sagemath.org/ticket/31241#comment:11
<p>
The forgetful functor seems not to work properly anyway. Opened another ticket <a class="new ticket" href="https://trac.sagemath.org/ticket/31247" title="defect: Forgetful Functor not working properly (new)">#31247</a>.
</p>
Ticketgh-mjungmathFri, 15 Jan 2021 13:34:19 GMTdependencies set
https://trac.sagemath.org/ticket/31241#comment:12
https://trac.sagemath.org/ticket/31241#comment:12
<ul>
<li><strong>dependencies</strong>
set to <em>#31247</em>
</li>
</ul>
TickettscrimSun, 17 Jan 2021 02:29:34 GMT
https://trac.sagemath.org/ticket/31241#comment:13
https://trac.sagemath.org/ticket/31241#comment:13
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:10" title="Comment 10">gh-mjungmath</a>:
</p>
<blockquote class="citation">
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:9" title="Comment 9">tscrim</a>:
</p>
<blockquote class="citation">
<p>
I am a little hesitant to call it a bug because it still has that structure once it goes through the functor. The problem is the mutability and that you can make it leave the corresponding category. Now you could implement something specific that handles an instance of <code>Manifold</code>. Although I feel that getting something of this level of generality would be hard. I think you are probably better off implementing a mechanism in the <code>Manifold</code> class itself.
</p>
</blockquote>
<p>
Agreed. Calling that, one could make a function in <code>OpenInterval</code> returning an element of <code>RealSet</code>. But wait, the forgetful functor to sets works differently, right?
</p>
<p>
The approach I had in mind is as simple as that: new instance of the desired kind and copy charts. Where do you think may problems occour?
</p>
</blockquote>
<p>
Something you could do is implement the corresponding <code>_call_</code> in the appropriate subcategories of <code>Manifolds</code> to handle the corresponding transferring of data. Although this probably would be a lot easier once there is a way to copy manifolds and reconstruct them, which I still need to do as part of the pickling fix... There is just a lot of data that needs to be carefully preserved and constructed ideally using the construction methods already in place. That is where bugs will likely occur. There are many ways to implement this that have various pros and cons, you just need to decide on which one you want.
</p>
Ticketgh-mjungmathSun, 17 Jan 2021 09:43:05 GMT
https://trac.sagemath.org/ticket/31241#comment:14
https://trac.sagemath.org/ticket/31241#comment:14
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:13" title="Comment 13">tscrim</a>:
</p>
<blockquote class="citation">
<p>
Something you could do is implement the corresponding <code>_call_</code> in the appropriate subcategories of <code>Manifolds</code> to handle the corresponding transferring of data.
</p>
</blockquote>
<p>
Won't work at the current stage. See <a class="new ticket" href="https://trac.sagemath.org/ticket/31247" title="defect: Forgetful Functor not working properly (new)">#31247</a>.
</p>
Ticketgh-mjungmathMon, 18 Jan 2021 10:32:55 GMT
https://trac.sagemath.org/ticket/31241#comment:15
https://trac.sagemath.org/ticket/31241#comment:15
<p>
Okay, if I recall correctly, <a class="new ticket" href="https://trac.sagemath.org/ticket/31247" title="defect: Forgetful Functor not working properly (new)">#31247</a> is not a bug, just simply not realistic. Instead, we can overwrite <code>__call__</code> (double underscore!) for the special case of manifolds.
</p>
TicketmkoeppeSat, 13 Feb 2021 20:51:01 GMTmilestone changed
https://trac.sagemath.org/ticket/31241#comment:16
https://trac.sagemath.org/ticket/31241#comment:16
<ul>
<li><strong>milestone</strong>
changed from <em>sage-9.3</em> to <em>sage-9.4</em>
</li>
</ul>
<p>
Setting new milestone based on a cursory review of ticket status, priority, and last modification date.
</p>
Ticketgh-mjungmathWed, 05 May 2021 20:58:35 GMT
https://trac.sagemath.org/ticket/31241#comment:17
https://trac.sagemath.org/ticket/31241#comment:17
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:13" title="Comment 13">tscrim</a>:
</p>
<blockquote class="citation">
<p>
Something you could do is implement the corresponding <code>_call_</code> in the appropriate subcategories of <code>Manifolds</code> to handle the corresponding transferring of data. Although this probably would be a lot easier once there is a way to copy manifolds and reconstruct them, which I still need to do as part of the pickling fix... There is just a lot of data that needs to be carefully preserved and constructed ideally using the construction methods already in place. That is where bugs will likely occur. There are many ways to implement this that have various pros and cons, you just need to decide on which one you want.
</p>
</blockquote>
<p>
Foremost charts, transition maps and their domains need to be copied since they encode the manifold's topology. I don't think that more data are necessary, except for the name and the dimension.
</p>
<p>
Is there a ticket devoted to pickling of manifolds yet?
</p>
TicketmkoeppeMon, 31 May 2021 00:30:36 GMT
https://trac.sagemath.org/ticket/31241#comment:18
https://trac.sagemath.org/ticket/31241#comment:18
<p>
See also: discussion in <a class="ext-link" href="https://trac.sagemath.org/ticket/31877#comment:10"><span class="icon"></span>https://trac.sagemath.org/ticket/31877#comment:10</a>
</p>
Ticketgh-mjungmathMon, 31 May 2021 07:58:21 GMT
https://trac.sagemath.org/ticket/31241#comment:19
https://trac.sagemath.org/ticket/31241#comment:19
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:18" title="Comment 18">mkoeppe</a>:
</p>
<blockquote class="citation">
<p>
See also: discussion in <a class="ext-link" href="https://trac.sagemath.org/ticket/31877#comment:10"><span class="icon"></span>https://trac.sagemath.org/ticket/31877#comment:10</a>
</p>
</blockquote>
<p>
I tend to say that things are different for manifold objects. Sometimes you really want to work in a genuine weaker structure, for example to impose new charts that have continuous transition maps instead of differentiable ones.
</p>
Ticketgh-mjungmathMon, 31 May 2021 08:06:07 GMT
https://trac.sagemath.org/ticket/31241#comment:20
https://trac.sagemath.org/ticket/31241#comment:20
<p>
I think you can boil it down to the following. In contrast to rings like <code>ZZ</code> or <code>QQ</code>, where elements are immutable objects, manifold objects can dynamically be extended. Now, the extension highly depends on the context (topological, differentiable, semi-Riemannian).
</p>
TickettscrimTue, 01 Jun 2021 00:47:08 GMT
https://trac.sagemath.org/ticket/31241#comment:21
https://trac.sagemath.org/ticket/31241#comment:21
<p>
As I mentioned in <a class="closed ticket" href="https://trac.sagemath.org/ticket/31877" title="enhancement: Refine category of RealSet (closed: fixed)">#31877</a>, the manifold is not as special as you want it to be. It can be provided more information, but it is not something that is mutable. Subsequently, you have genuinely different objects for topological and differentiable on the same underlying set if you have different maximal atlases. Applying the forgetful functor, you would have the <em>same</em> maximal atlas, which means the differentiable structure would still be there.
</p>
Ticketgh-mjungmathTue, 01 Jun 2021 08:49:14 GMT
https://trac.sagemath.org/ticket/31241#comment:22
https://trac.sagemath.org/ticket/31241#comment:22
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:21" title="Comment 21">tscrim</a>:
</p>
<blockquote class="citation">
<p>
As I mentioned in <a class="closed ticket" href="https://trac.sagemath.org/ticket/31877" title="enhancement: Refine category of RealSet (closed: fixed)">#31877</a>, the manifold is not as special as you want it to be. It can be provided more information, but it is not something that is mutable. Subsequently, you have genuinely different objects for topological and differentiable on the same underlying set if you have different maximal atlases. Applying the forgetful functor, you would have the <em>same</em> maximal atlas, which means the differentiable structure would still be there.
</p>
</blockquote>
<p>
Sure, starting with a differential manifold and applying the forgetful functor to it, a new instance must be constructed, particularly an instance of <code>TopologicalManifold</code>. It should come with the "same" charts (different instances of course). Then you can add new charts dynamically, e.g. continuous but not differentiable, to the implementation. This is where the dynamical nature of manifolds comes into play.
</p>
<p>
That is at least how I would think the forgetful functor might be used in this case.
</p>
Ticketgh-mjungmathTue, 01 Jun 2021 08:52:08 GMT
https://trac.sagemath.org/ticket/31241#comment:23
https://trac.sagemath.org/ticket/31241#comment:23
<p>
And I didn't say the manifold itself was mutable. I said its objects were.
</p>
TickettscrimWed, 02 Jun 2021 05:57:32 GMT
https://trac.sagemath.org/ticket/31241#comment:24
https://trac.sagemath.org/ticket/31241#comment:24
<p>
You are confusing the notion of mutable and dynamic and forgetting that a manifold is defined by its objects (e.g., charts). If you have a differentiable manifold <code>M</code> and apply the forgetful functor to it, you get the <strong>same</strong> manifold <code>M</code> back with the <strong>same</strong> maximal atlas. If you then "add" something that makes it not a differentiable manifold, then you actually have a <em>different</em> manifold because you have a different maximal atlas. So you are actually creating a copy with some of the initial information the same, but you then give information that your copy is different than what you started with. Having initial information is a programming concept, not a mathematical one.
</p>
Ticketgh-mjungmathWed, 02 Jun 2021 08:59:44 GMT
https://trac.sagemath.org/ticket/31241#comment:25
https://trac.sagemath.org/ticket/31241#comment:25
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:24" title="Comment 24">tscrim</a>:
</p>
<blockquote class="citation">
<p>
You are confusing the notion of mutable and dynamic and forgetting that a manifold is defined by its objects (e.g., charts). If you have a differentiable manifold <code>M</code> and apply the forgetful functor to it, you get the <strong>same</strong> manifold <code>M</code> back with the <strong>same</strong> maximal atlas. If you then "add" something that makes it not a differentiable manifold, then you actually have a <em>different</em> manifold because you have a different maximal atlas. So you are actually creating a copy with some of the initial information the same, but you then give information that your copy is different than what you started with. Having initial information is a programming concept, not a mathematical one.
</p>
</blockquote>
<p>
Mathematically this is wrong. As soon as you apply the forgetful functor from differentiable manifolds to topological manifolds, the maximal atlas changes accordingly. In particular, the maximal atlas now consists of all charts that are continuously compatible w.r.t. to all charts in the differentiable structure.
</p>
<p>
That is exactly the punchline: adding a non-compatible chart (in the differentiable sense) which is still countinously compatible would corrupt the differentiable structure, but keep the maximal atlas of the topological manifold intact.
</p>
TickettscrimWed, 02 Jun 2021 09:17:38 GMT
https://trac.sagemath.org/ticket/31241#comment:26
https://trac.sagemath.org/ticket/31241#comment:26
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:25" title="Comment 25">gh-mjungmath</a>:
</p>
<blockquote class="citation">
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:24" title="Comment 24">tscrim</a>:
</p>
<blockquote class="citation">
<p>
You are confusing the notion of mutable and dynamic and forgetting that a manifold is defined by its objects (e.g., charts). If you have a differentiable manifold <code>M</code> and apply the forgetful functor to it, you get the <strong>same</strong> manifold <code>M</code> back with the <strong>same</strong> maximal atlas. If you then "add" something that makes it not a differentiable manifold, then you actually have a <em>different</em> manifold because you have a different maximal atlas. So you are actually creating a copy with some of the initial information the same, but you then give information that your copy is different than what you started with. Having initial information is a programming concept, not a mathematical one.
</p>
</blockquote>
<p>
Mathematically this is wrong. As soon as you apply the forgetful functor from differentiable manifolds to topological manifolds, the maximal atlas changes accordingly. In particular, the maximal atlas now consists of all charts that are continuously compatible w.r.t. to all charts in the differentiable structure.
</p>
</blockquote>
<p>
You're wrong. Otherwise the category of differentiable manifolds is not a subcategory of topological manifolds. So there would be no forgetful functor. Alternatively, you have a covering of your manifold by charts with maps to open subsets of R<sup>n</sup> that are diffeomorphic. The fact this is a covering forces any other chart to also be a diffeomorphism by the transition functions. Your maximal atlas cannot change under the forgetful functor.
</p>
<blockquote class="citation">
<p>
That is exactly the punchline: adding a non-compatible chart (in the differentiable sense) which is still countinously compatible would corrupt the differentiable structure, but keep the maximal atlas of the topological manifold intact.
</p>
</blockquote>
<p>
Which gives you a new distinct mathematical object. You cannot add information to the manifold by the forgetful functor. In the implementation here, you are not adding or changing the information, only "discovering" more.
</p>
Ticketgh-mjungmathWed, 02 Jun 2021 10:37:55 GMT
https://trac.sagemath.org/ticket/31241#comment:27
https://trac.sagemath.org/ticket/31241#comment:27
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:26" title="Comment 26">tscrim</a>:
</p>
<blockquote class="citation">
<p>
You're wrong. Otherwise the category of differentiable manifolds is not a subcategory of topological manifolds. So there would be no forgetful functor.
</p>
</blockquote>
<p>
Why not? The differentiable structure is a subset of the maximal topological atlas, and the maximal atlas is uniquely determined by the differentiable structure, so I don't see any problems here.
</p>
<p>
In any case, it would be nice to copy a differentiable manifold in terms of a topological manifold. The forgetful functor would do the job in the mathematical sense.
</p>
TickettscrimWed, 02 Jun 2021 12:19:28 GMT
https://trac.sagemath.org/ticket/31241#comment:28
https://trac.sagemath.org/ticket/31241#comment:28
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:27" title="Comment 27">gh-mjungmath</a>:
</p>
<blockquote class="citation">
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:26" title="Comment 26">tscrim</a>:
</p>
<blockquote class="citation">
<p>
You're wrong. Otherwise the category of differentiable manifolds is not a subcategory of topological manifolds. So there would be no forgetful functor.
</p>
</blockquote>
<p>
Why not? The differentiable structure is a subset of the maximal topological atlas, and the maximal atlas is uniquely determined by the differentiable structure, so I don't see any problems here.
</p>
</blockquote>
<p>
Because you have a genuinely different manifold when your maximal atlas changes. This is <em>not</em> the result of applying the forgetful functor as an embedding of subcategories.
</p>
<p>
You also have to be careful that this is up to <em>equality</em>, not <em>isomorphism</em>. For example, there are infinitely many smooth structures you can place upon R<sup>4</sup>, so they are not equivalent (i.e., diffeomorphic) in the category of smooth manifolds. However, applying the forgetful functor to each of these do not result in the same (in the equality sense) copy of R<sup>4</sup>, but they are all isomorphic (now here homeomorphic) in the category of topological manifolds.
</p>
<p>
For a very concrete example of the above, the above is analogous to the groups C<sub>4</sub> and C<sub>2</sub> x C<sub>2</sub>. They are equivalent as sets (i.e., same cardinality) but not as groups.
</p>
<blockquote class="citation">
<p>
In any case, it would be nice to copy a differentiable manifold in terms of a topological manifold. The forgetful functor would do the job in the mathematical sense.
</p>
</blockquote>
<p>
See above. It is mathematically wrong to not obtain a differentiable manifold from the forgetful functor if you want differentiable manifolds to be a subcategory of topological manifolds. I don't see how the category of differentiable manifolds is not a subcategory of topological manifolds (in the mathematical sense of a subcategory). If you want to call this the forgetful functor, you need to prove to me that the maximal atlas actually changes.
</p>
Ticketgh-mjungmathWed, 02 Jun 2021 22:27:21 GMT
https://trac.sagemath.org/ticket/31241#comment:29
https://trac.sagemath.org/ticket/31241#comment:29
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:28" title="Comment 28">tscrim</a>:
</p>
<blockquote class="citation">
<p>
Because you have a genuinely different manifold when your maximal atlas changes. This is <em>not</em> the result of applying the forgetful functor as an embedding of subcategories.
</p>
</blockquote>
<p>
Okay, I think we can see it as follows. A topological manifold comes equipped with a maximal <em>topological</em> atlas. This atlas contains all information about the topology and local Euclideanness.
</p>
<p>
To impose a differentiable structure, we add an additional atlas, namely the maximal <em>differentiable</em> atlas. So in a way, we can say that a differentiable manifold is endowed with two atlases. However, it turns out that the topological atlas is not needed because it can be recovered from the differentiable atlas.
</p>
<p>
Now, when we apply the forgetful functor, we simply forget about the differentiable atlas, and what remains is the maximal <em>topological</em> atlas.
</p>
<p>
So you were right when you said "the atlas does not change". I suppose I was just extremely sloppy here. Does that resolve some things?
</p>
TickettscrimThu, 03 Jun 2021 00:04:29 GMT
https://trac.sagemath.org/ticket/31241#comment:30
https://trac.sagemath.org/ticket/31241#comment:30
<p>
Ye. Thus what you really want is a way to create a copy of the current data, but with the category changed. This is similar to the <code>change_ring()</code> method of matrices.
</p>
Ticketgh-mjungmathThu, 03 Jun 2021 08:58:31 GMT
https://trac.sagemath.org/ticket/31241#comment:31
https://trac.sagemath.org/ticket/31241#comment:31
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/31241#comment:30" title="Comment 30">tscrim</a>:
</p>
<blockquote class="citation">
<p>
Ye. Thus what you really want is a way to create a copy of the current data, but with the category changed. This is similar to the <code>change_ring()</code> method of matrices.
</p>
</blockquote>
<p>
Mh. Not really, right? A differentiable manifold is an instance of <code>DifferentiableManifold</code>. If we want to work with that manifold in terms of a topological manifold, we must turn (or rather copy) it into an instance of <code>TopologicalManifold</code>. Changing the category or a structure attribute alone wouldn't do the job, no?
</p>
TickettscrimThu, 03 Jun 2021 09:00:49 GMT
https://trac.sagemath.org/ticket/31241#comment:32
https://trac.sagemath.org/ticket/31241#comment:32
<p>
Yea, perhaps I was a little imprecise. I meant change the necessary information in the copy.
</p>
TicketmkoeppeMon, 19 Jul 2021 01:16:42 GMTmilestone changed
https://trac.sagemath.org/ticket/31241#comment:33
https://trac.sagemath.org/ticket/31241#comment:33
<ul>
<li><strong>milestone</strong>
changed from <em>sage-9.4</em> to <em>sage-9.5</em>
</li>
</ul>
Ticket