# Examining the quotients of a module $R\times R$ where $R$ is a finite ring.

I'm new to Sage, and I've been struggling to get started with (what I thought) should be a basic construction.

I have an $8$-element commutative ring $R$ which is constructed as a quotient of a polynomial ring in two variables. I need to examine all of the quotient of the right $R$ module $R\times R$.

I tried to use `M=R^2`

and got something that looked promising, but when I tried to use the `quotient_module`

method, I kept getting errors. I saw in the docs for that method that quotient_module isn't fully supported, so I started looking at the CombinatorialFreeModule class too.

Can someone recommend an idiomatic way to accomplish the task?

I have been plagued by NotImplemented errors and a myriad of other error messages every step of the way, even when just attempting to find a method to list all elements of my $8$ element ring. All the examples I've seen really look like they stick to basic linear algebra, or free $\mathbb Z$ modules. I just want to do something similar for my small ring of $8$ elements.

Here's what I've been trying:

```
k # <- (finite field of size 2)
R.<x,y>=PolynomialRing(k)
S = R.quotient([x^2, x*y, y^3])
list(S) # <-- NotImplementedError("object does not support iteration") I noticed it worked for the univariate case though. What's a good way to recover the elements?
M = S^2
v = M.gens()
M.quotient_module([v[0]]) # <- ValueError("unable to compute the row reduced echelon form") TypeError("self must be an integral domain.")
```

Had the same problem with a univariate polynomial ring over $F_2$ mod $(x^3)$.

Obviously the messages are informative enough about what they think is wrong. But this seems like such an elementary task... is there some other class that can handle such a construction?

Indeed it would be helpful to have your example at hand.

@vdelecroix I've improved the question with more details, now that I have the thing in front of me.

Indeed, the class

`QuotientRing_generic`

that is used in your example is not intended to work well in the finite situation. It has be thought with polynomial ring over ZZ or QQ in mind. This is just a lack of interest from the current programmers of Sage. As you might know, Sage is developed by volunteers and any contribution is more than welcome, see http://doc.sagemath.org/html/en/developer/.@vdelecroix I would be happy to contribute a module to better handle finite rings and their free modules (I am a professional Python programmer), but it will be a while before I understand the conventions in the codebase. Thanks for taking the time to comment.