Opened 6 years ago
Closed 6 years ago
#17990 closed defect (fixed)
Implements is_zero and is_commutative for infinity ring
Reported by: | virmaux | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | sage-6.7 |
Component: | calculus | Keywords: | InfinityRing, matrix, days64 |
Cc: | jipilab, rws | Merged in: | |
Authors: | Aladin Virmaux | Reviewers: | Jean-Philippe Labbé |
Report Upstream: | N/A | Work issues: | |
Branch: | 76307b8 (Commits, GitHub, GitLab) | Commit: | 76307b8af01f0af127a7a2abb2cd79851f59028e |
Dependencies: | Stopgaps: |
Description (last modified by )
Infinity ring is commutative and non-zero.
Because there is no is_zero
and is_commutative
method for InfinityRing
, numerous methods fails for matrices with infinity elements. This problem came up in relation with the ticket #17798.
sage: m = Matrix([Infinity]) sage: m.nrows() 1 sage: m.rows() --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) [...] AttributeError: 'InfinityRing_class' object has no attribute 'is_zero'
Change History (23)
comment:1 Changed 6 years ago by
- Branch set to u/virmaux/matrix_with_infinity
comment:2 Changed 6 years ago by
- Commit set to 270acabc1c9ab7ac116a188643fcc90a01c5043d
- Status changed from new to needs_review
comment:3 Changed 6 years ago by
- Cc rws added
Do other systems (such as in the mission statement) even have matrices with infinity? I guess the infinity ring is commutative...?
comment:4 Changed 6 years ago by
Hello! I am not sure to understand your question. Are you looking for actual examples in sage of code using matrix for infinity elements ?
The depth of the problem of the mission statement is that the base ring of InfinityRing
is itself. The methods rows is looking if self has the attribute is_commutative, and if not suppose that self.base_ring has it.
comment:5 Changed 6 years ago by
Sorry, what I meant was do other math software systems such as Maple, Mathematica, Magma, ... have matrices with infinity in them? Does anyone ever use such things? Or should we instead disallow them? (I'm not speaking of arrays with NaN
values, but of matrices specifically and infinity specifically.)
comment:6 follow-up: ↓ 7 Changed 6 years ago by
- Description modified (diff)
Coxeter matrices is an example of matrix where infinity is a possible value. See #17798.
comment:7 in reply to: ↑ 6 Changed 6 years ago by
comment:8 Changed 6 years ago by
Hello,
We check that #17990 is fixed::
should be
We check that :trac:`17990` is fixed::
On the other hand, a better solution would be to use the new category framework for that and get rid of ParentWithGens
.
Vincent
comment:9 follow-up: ↓ 10 Changed 6 years ago by
This ticket deals exclusively with MatrixSpace
over InfinityRing
, and in this case, it is InfinityRing
that needs to become a new-style Parent
class to fix this ticket and perhaps is the better fix IMO for is_zero
(along with the implementation of is_commutative
).
In parallel to this, MatrixSpace
should become a Parent
, and since it walks like one, it shouldn't be too hard to convert it over.
For matrices with infinities, we want to construct a Coxeter matrix without the current hack of representing oo
with -1
(in CoxeterMatrixGroup
), nor do we want to use the SymbolicRing
as we feel it is way too heavy-handed of a solution. I guess fundamentally we want a 2D array since we don't need the ground set to be a ring (it'd be NN[oo]
), but the matrix class(es) in Sage have nice displays...
comment:10 in reply to: ↑ 9 ; follow-up: ↓ 11 Changed 6 years ago by
Replying to tscrim:
For matrices with infinities, we want to construct a Coxeter matrix without the current hack of representing
oo
with-1
(inCoxeterMatrixGroup
), nor do we want to use theSymbolicRing
as we feel it is way too heavy-handed of a solution.
So then I guess you need something like an "Alexandroff extension functor" that you could apply to a Parent to adjoin it an element at infinity, don't you?
comment:11 in reply to: ↑ 10 ; follow-up: ↓ 15 Changed 6 years ago by
Replying to mmezzarobba:
Replying to tscrim:
For matrices with infinities, we want to construct a Coxeter matrix without the current hack of representing
oo
with-1
(inCoxeterMatrixGroup
), nor do we want to use theSymbolicRing
as we feel it is way too heavy-handed of a solution.So then I guess you need something like an "Alexandroff extension functor" that you could apply to a Parent to adjoin it an element at infinity, don't you?
If that means given an ordered set S
, we can add an element oo
such that x < oo
for all in S
, then yes.
comment:12 Changed 6 years ago by
- Status changed from needs_review to needs_work
Please use the trac role :trac:`17990`
instead of just #17990
in the doc.
comment:13 Changed 6 years ago by
- Commit changed from 270acabc1c9ab7ac116a188643fcc90a01c5043d to 36263134d2c65c97ef3e57e8f0efa2e8ba0b52b9
comment:14 Changed 6 years ago by
- Status changed from needs_work to needs_review
I just merged develop and corrected the wrong reference to trac into :trac:`17990`
.
comment:15 in reply to: ↑ 11 Changed 6 years ago by
Replying to tscrim:
So then I guess you need something like an "Alexandroff extension functor" that you could apply to a Parent to adjoin it an element at infinity, don't you?
If that means given an ordered set
S
, we can add an elementoo
such thatx < oo
for all inS
, then yes.
Well, the reference to Alexandroff extensions is not appropriate then, but the idea would be the same.
In any case, let me ask again: is the following really what you want?
sage: matrix([[Infinity], [1]]) [ +Infinity] [A positive finite number]
comment:16 Changed 6 years ago by
I believe not. What we wish to have is something like this:
sage: Matrix([[oo, 3],[2,3]]) [+Infinity 1] [ 2 3] sage: M.parent() Full MatrixSpace of 2 by 2 dense matrices over (NN\cup \{oo\}) <--------------
... but this is not related to the ticket description. If the ticket is fixed, it will be enough for now.
comment:17 Changed 6 years ago by
- Milestone changed from sage-6.6 to sage-6.7
comment:18 Changed 6 years ago by
Coming back to the description of the ticket, does it make sense for Infinityring to have the two methods
is_zero() and is_commutative()?
IMHO, the answer is yes and the patch fixes this. This is the problem raised in the ticket. Otherwise, the description should be changed to be more precise.
comment:19 Changed 6 years ago by
- Description modified (diff)
- Reviewers set to Jean-Philippe Labbé
- Status changed from needs_review to needs_work
Hi Aladin,
Could you please do the following
-add your full name as an Author, -make the title of the ticket reflect the addition of the two methods.
This ticket is not about matrix with Infinity, but rather about the fact that we need two methods on the infinity ring.
comment:20 Changed 6 years ago by
- Description modified (diff)
- Summary changed from Matrix with Infinity to Implements is_zero and is_commutative for infinity ring
Hey, sorry for the delay but I have been really busy these last days. I have also merged develop and corrected a few PEP8.
comment:21 Changed 6 years ago by
- Commit changed from 36263134d2c65c97ef3e57e8f0efa2e8ba0b52b9 to 76307b8af01f0af127a7a2abb2cd79851f59028e
comment:22 Changed 6 years ago by
- Status changed from needs_work to positive_review
This looks good to me.
comment:23 Changed 6 years ago by
- Branch changed from u/virmaux/matrix_with_infinity to 76307b8af01f0af127a7a2abb2cd79851f59028e
- Resolution set to fixed
- Status changed from positive_review to closed
New commits:
17990: add is_zero and is_commutative methods for InfinityRing