A Factorization Algorithm for G-Algebras and Applications

A Factorization Algorithm for G-Algebras and Applications

Abstract

It has been recently discovered by Bell, Heinle and Levandovskyy that a large class of algebras, including the ubiquitous -algebras, are finite factorization domains (FFD for short).

Utilizing this result, we contribute an algorithm to find all distinct factorizations of a given element , where is any -algebra, with minor assumptions on the underlying field.

Moreover, the property of being an FFD, in combination with the factorization algorithm, enables us to propose an analogous description of the factorized Gröbner basis algorithm for -algebras. This algorithm is useful for various applications, e.g. in analysis of solution spaces of systems of linear partial functional equations with polynomial coefficients, coming from . Additionally, it is possible to include inequality constraints for ideals in the input.

-Algebras, Gröbner Bases, Factorization
\conferenceinfo

ISSAC’16 Waterloo, Ontario, Canada

\numberofauthors

2

1 Introduction

Notations: Throughout the paper we denote by a field. In the algorithmic part we will assume to be a computable field. is the set of natural numbers including zero. For a -algebra we denote by the group of invertible (unit) elements of , which is nonabelian in general. For we denote by the left ideal, generated by . The main focus in this paper lies in so called -algebras, which are defined as follows.

Definition 1

For and consider the units and polynomials . Suppose, that there exists a monomial total well-ordering on , such that for any either or the leading monomial of is smaller than with respect to . The -algebra is called a -algebra, if is a -basis of .

-algebras [1, 19] are also known as algebras of solvable type [18, 20] and as PBW algebras [4, 5]. -algebras are Noetherian domains of finite global, Krull and Gel’fand-Kirillov dimensions.

We assume that the reader is familiar with the basic terminology in the area of Gröbner bases, both in the commutative as well as in the non-commutative case. We recommend [3, 5, 19] as literature on this topic.

Recall, that is called irreducible, if in any factorization either or holds. Otherwise, we call reducible.

Definition 2 (cf. [2])

Let be a (not necessarily commutative) domain. We say that is a finite factorization domain (FFD, for short), if every nonzero, non-unit element of has at least one factorization into irreducible elements and there are at most finitely many distinct factorizations into irreducible elements up to multiplication of the irreducible factors by central units in .

2 Motivation and Applications

Problem 1

Let be a finite factorization domain and a -algebra. Given , compute all its factorizations of the form , where and are irreducible.

This paper is devoted in part to the algorithmic solution of Problem 1 for a broad class of -algebras. With this algorithm one can approach a number of important problems, which we discuss in details.

Let be a -algebra and a finitely generated left ideal.

Problem 2

Compute a proper left ideal .

Unfortunately, it is not known in general, whether the problem of left maximality of a given ideal with respect to inclusion is decidable. Therefore we are interested in the local negative form of it. Namely, if Problem 2 can be solved, then is not left maximal. Moreover, for any as above, we have a surjection from to its proper factor-module , in other words the exact sequence of left -modules

which contributes to the knowledge of the structure of .

Suppose that has finitely many factorizations up to multiplication by central units, where and . We do not require that or are irreducible. Suppose, that . Then , hence there is a natural surjective homomorphism of left -modules

Relations with solution spaces: Let be an arbitrary (in particular, not necessarily finitely generated) left -module, which one can think about as of the space of solutions for -modules. Then, for fixed and an -module one denotes , which is a -vector space and an -module [22].

By invoking the Noether-Malgrange isomorphism [22], we obtain for an the natural injective map of -vector spaces

The latter sheds light on the structure of the space of solutions of .

Note, that the following version of the left Chinese remainder theorem for modules holds:

Theorem 1

Let be a -algebra, a finite set of indices and are left ideals in . Consider the homomorphism

Then the following holds

  • is injective

  • if holds , then is surjective.

Of course, one can assume that are proper nonzero ideals.

In the second item of the Theorem 1 one says that the collection is left comaximal. Then is an isomorphism and one has a finite direct sum decomposition of the module . Hence, there is a direct sum decomposition of the solution spaces

Note, that the right hand side can be a direct sum even if the condition (2) is not satisfied, see Example 3.

Another application: Let be a domain and be multiplicatively closed Ore set. By Ore’s Theorem the localization exists and there is an injective homomorphism [5].

A left ideal is called left -closed if , where is the -closure of . There is another characterization of -closedness: , where the latter homomorphism of -modules is . Then is the -torsion submodule of and has no -torsion.

Problem 3

Given an Ore set and , give an algorithm to compute .

For a general , it is unknown, whether is computable. If is the th Weyl algebra, and has finite holonomic rank, then there is an algorithm [24, 23] to compute (known as the Weyl closure of ).

The factorization can be used in the process of computing as follows. Let be an FFD. Given , one computes finitely many factorizations for some finite indexing set . Then let . If , one has . In such a way one obtains an approximation to . Note, that if and only if .

3 How to factor in -Algebras

3.1 General Algorithm

In a recent publication [2, Theorem 1.3], it was proven that each -algebra is a finite factorization domain.

In the same paper, an outline was given how one could find all possible factorizations of an element in . In this section, we will provide a thorough description of an algorithm to find all possible factorizations of an element in a -algebra , up to multiplication by central units.

For this, we need to make a further assumption on our field , which holds for most practical choices of .

Assumption: There exists an algorithm to determine if a polynomial in has roots in . If has roots in , then this algorithm can produce all -roots of .

Recall, that is a -basis of . With respect to an admissible monomial ordering on we can uniquely write every as with . Moreover, either or for any summand , of . Then is the leading monomial of and is the leading coefficient of . A polynomial with is called monic.

It is important to recall [19], that holds in a -algebra.

Input: .

Output: (up to multiplication of each factor by a central unit).

Assumption: An admissible monomial ordering on is fixed and is monic with respect to it.

1:  
2:  
3:  for  do
4:     for  to  do
5:        Set up an ansatz for the -coefficients of with and .
6:         the reduced Gröbner basis w.r.t. an elimination ordering of the ideal generated by the coefficients of .
7:        if  then
8:            Variety of in an affine space over .
9:           , where the coefficients of are given by
10:        end if
11:     end for
12:  end for
13:  if  then
14:     return  {(g)}
15:  else
16:     Recursively factor and for each .
17:  end if
18:  return  R
Algorithm 1 Factoring an element in a -algebra
{proof}

[of Algorithm 1] Let us begin with discussing the termination. The set in line 2 is finite, as it is a permutation of a finite product of the variables in . Since is a -algebra, the set of total well-orderings on it, satisfying the Definition 1, is nonempty. By [4], in this set there is a weighted degree total ordering, say with strictly positive weights. Without loss of generality let us assume this is the ordering we are working with. Thus for any monomial there are only finitely many monomials which are smaller with respect to . In particular, this applies to and in line 5. The variety will be a finite set due to the fact that is an FFD. Thus, the set in line 9 will also be finite. The recursive call will also terminate, since in each step we either discover that we cannot refine our factorization any more, or we split a given factor into two factors of strictly smaller degrees.

For the correctness discussion of our algorithm, we need to show that we can calculate the variety in line 8. We know, since is an FFD, that the ideal generated by is either zero-dimensional over or it is an intersection of such with a higher-dimensional ideal , whereas the variety of does not contain points from an affine space over . Hence we proceed with the zero-dimensional component of .

Our assumption above states that we can find all -roots of a univariate polynomial. Since is zero-dimensional, for any variable there is the corresponding univariate polynomial, generating the principal ideal . By backwards substitution, we obtain the entire -variety of the ideal generated by .

Example 1

Let us consider the universal enveloping algebra of [11], represented by

In , we want to factorize the element

We fix the lexicographic ordering on , i.e. the leading term of is .

Therefore the set in line 2 is given as

When choosing , for one obtains the factorization

By picking , for one obtains two more factorizations, namely

and

All the other combinations either produce the same factorizations or none.

When recursively calling the algorithm for each factor in the found factorizations, we discover that the first two factorizations have a reducible factor. In the end, one obtains the following two distinct factorizations of into irreducible factors:

3.2 Implementation

We have developed an experimental implementation of Algorithm 1 in the computer algebra system Singular [10]. We will make it available as part of ncfactor.lib. Our newly implemented procedures factorize elements in any -algebra, whose ground field is , where is either or a finite prime field and are transcendental over .

We designed the software in a modular way, so that during runtime our function checks if a more efficient factorization algorithm is available for the specific given -algebra and/or input polynomial. If this is the case, the input is re-directed to this function. In this way, the user can call the general function to factor elements in any one of the supported -algebras, and runs the available optimized algorithms, where available, without calling them individually.

3.3 Possible Improvements

Algorithm 1 solves the problem of finding all possible factorizations of an element in a -algebra, but it will not be very efficient in general. This is not only due to the complexity of the necessary calculation of a Gröbner basis [21], but also the size of the set is a bottleneck. In [12, 13], an algorithm for factoring elements in the th Weyl algebra is presented, which is similar to Algorithm 1. The main difference is that the -graded structure is utilized. There, the homogeneous polynomials of degree zero form a -algebra , which is isomorphic to a commutative multivariate polynomial ring. The set of homogeneous polynomials of degree has the structure of a cyclic -bimodule. Hence, factorization of homogeneous polynomials with respect to the -grading reduces to factoring commutative polynomials with minor additional combinatorial steps. An inhomogeneous polynomial has now the highest graded part and the lowest graded part , both of them rather polynomials than monomials. Hence have potentially smaller numbers of different factorizations than the permutations of the leading term collected in in Algorithm 1. Indeed, it suffices to consider firstly factorizations into two polynomials and for each candidate pair an ansatz is made for the graded terms between the highest and the lowest graded parts. This means, that the set has smaller size in general when using this technique. Additionally, this approach takes the lowest graded part into account, which allows to eliminate certain invalid cases beforehand. The performance increase is reflected by the benchmarks presented in [12, 17].

Hence, for practical implementations of Algorithm 1, one should examine each possible -algebra separately and take advantage of potential extra structure, like the presence of nontrivial -grading or an isomorphism to an algebra with this structure.

We will conclude this section by summarizing the conditions that can lead to an improved version of Algorithm 1. Let be a -algebra, which possesses a nontrivial (i.e. not all weight vectors are zero) -(multi)grading. Then one can infer the following additional information:

  1. For , is a -vector space. Moreover, and for all .

  2. , the graded part of degree zero, is a -algebra itself (since ).

  3. For , the -th graded part is an -bimodule (since ).

In order to be useful for factorizing purpose, this grading should have the following properties:

  1. The graded part of degree zero, , which is a -algebra, is additionally an FFD with “easy” factorization, preferably the commutative polynomial ring. Furthermore, for keeping the set in Algorithm 1 small, it would be desirable if in a randomly chosen polynomial is irreducible with high probability.

  2. The irreducible elements in , that are reducible in , can be identified and factorized in an efficient manner. Preferably, one has a finite number of monic elements of such type.

  3. For , the -th graded part is a finitely generated -bimodule, preferably a cyclic bimodule.

Then the Algorithm 1 can be modified along the lines of algorithms from [12, 13], which we have also sketched above. Let us illustrate this approach by a concrete example.

Example 2

As in Example 1, let , that is

Af first, let us determine which gradings are possible. Let and be the weights of the variables, not all zero. The two last relations of imply that , and the first one implies , that is . Hence a -grading is enough for our purposes, since is commutative and the -th graded part is a cyclic -bimodule, generated by if and by otherwise. This property guarantees, that and there exists , such that and and the same holds for the multiplication by . Note, that .

We claim that the only monic irreducible elements in , which are reducible in , are given by and . The proof to this claim is similar to the one for [13, Lemma 2.4], which we outline here: Let be an irreducible element in , which reduces into in , where are monic. Since is a domain, the factors are homogeneous with and for some . If or , would be reducible in , which violates our assumption. Hence only is possible. If any of or would have a non-trivial factor, we would obtain again that is reducible in . This leaves as only options or , as claimed. Thus, we have shown that irreducible elements in , which are reducible in , can be easily identified and factored.

Now consider the same polynomial as in Example 1. With respect to the -grading it decomposes into the following graded parts: , (as we see, in this case we have monomials in graded parts, while in general rather polynomials appear) and the intermediate parts are

Among the factorizations of and into two factors, consider the case and . Thus, we’re looking for with and and holds. In we have only one possible intermediate graded part , namely of degree 0 since and . In we have to specify the parts of degrees 1 resp. 0, that is resp. . After the multiplication, we obtain the following graded decomposition of intermediate graded terms of :

By fixing the maximal possible degree of , we can create and solve a system of equations which the coefficients of have to satisfy. In this example an ansatz in terms of , i.e. 9 unknown coefficients, leads to the system of 18 at most quadratic equations, which leads to the unique solution: , and . Substituting the polynomials, we arrive at the following factorization with polynomials sorted according to the grading:

This is already known to us from the Example 1. In an analogous way one can address other factorizations. Note, that in the ansatz we made, significantly less variables for unknown coefficients and a system of less equations of smaller total degree were used, compared to the general Algorithm.

4 The Factorized Gröbner Basis Algorithm for -Algebras

In what follows, by the term ideal we always mean a left ideal (unless otherwise specified).

The factorized Gröbner approach has been studied extensively for the commutative case [8, 7, 9, 14, 15], and implementations are e.g. provided in the computer algebra systems Singular [10] and Reduce [16].

The leading motivation is to split a Gröbner basis computation into smaller pieces with respect to the degrees of their generators. The union of the varieties of the ideals generated by these smaller pieces equals the variety of the initial system.

In the commutative case, there is also a way to constrain the solution space. One can provide an extra set of elements, that should not be reducible by the computed Gröbner basises. In this way, one excludes certain unwanted solutions, which is useful in practice.

The search for varieties in the commutative case translates to the search for solutions in the non-commutative case: All -algebras are finite factorization domains and a general factorization algorithm via Algorithm 1 is given. Many of them are abstractions of algebras of operators, and one is interested to find common solutions of certain sets of operators, written as polynomials. Right hand factors of elements correspond to partial solutions, and hence a split similar to the commutative case is helpful to recover partial solutions. Motivated by this observation, we attempt to generalize the factorized Gröbner basis algorithm to the -algebra case in this section. Our algorithm includes the possibility to introduce constraints, similar to the methods in the commutative case.

Unfortunately, not all nice properties transfer into the non-commutative case, as the following example depicts.

Example 3

In the commutative case, one has the property that the radical of the input ideal will be equal to the intersection of the radicals of all ideals computed by the factorized Gröbner basis algorithm.

We will show via a counter-example that we do not have the same property for -algebras.

Consider

This polynomial appears in [24] and has two different factorizations, namely

A reduced Gröbner basis of , computed in Singular [10], is given by

Hence, one main difference will be that we do not claim that the union of all solutions of our smaller pieces in the factorizing Gröbner basis algorithm will always be equal to all common solutions of the initial set of polynomials. In general, we will only find a subset of all solutions using our method. However, in this example, the space of holomorphic solutions of the differential equation associated to in fact coincides with the union of the solution spaces of the two generators of the intersection stated above.

Definition 3

Let be finite subsets in . We call the tuple a constrained Gröbner tuple, if is a Gröbner basis of , and for every . We call a constrained Gröbner tuple factorized, if every is either irreducible or has a unique irreducible left divisor.

It is possible to strengthen the assumptions on a factorized constrained Gröbner tuples by only allowing completely irreducible elements in , which might be preferable depending on the concrete problem. However, in our application, we allow elements with only one factorization. In this way, we increase the number of solutions we can find for a certain system by using our generalized factorized Gröbner basis algorithm. This methodology also appears in the context of semifirs, where the concept of so called block factorizations or cleavages has been introduced to study the reducibility of a principal ideal [6, Chapter 3.5].

Input: , .

Output: with

Assumption: All elements in and are monic.

1:  for  todo
2:     if  is reducible then
3:        
4:        if there exists with  then
5:           return  
6:        end if
7:     end if
8:  end for
9:  
10:  while   do
11:     Pick
12:     
13:      S-polynomial of and
14:     
15:     if  then
16:        if  is reducible then
17:           return  
18:        end if
19:        
20:        
21:     end if
22:     if there exists with  then
23:        return  
24:     end if
25:  end while
26:  return  
Algorithm 2 Factorized Gröbner bases Algorithm for -Algebras (FGBG)
{proof}

[of Algorithm 2] We will first discuss the termination aspect of Algorithm 2. Since as calculated in line 3 is of finite cardinality, the existence check in line 4 can be done in a finite number of steps. Line 5 consists of a finite number of recursive calls to FGBG. The algorithm reaches this line if there is an element in , which is reducible and has a non-unique irreducible left divisor. In each recursive call, the algorithm is called with an altered version of the set , where is being replaced in by , where is chosen such that there exists an irreducible in with . Therefore, after a finite depth of recursion, FGBG will be called with a set containing elements that are either irreducible or have an unique irreducible left divisor. We can make this assumption on when FGBG reaches line 9. Lines 1025 describe the Buchberger algorithm to compute a Gröbner basis, with two differences:

  1. If the normal form of an S-polynomial with respect to is not 0, we check for reducibility. If is reducible, we call FGBG recursively, adding to .

  2. We check the system for consistency, i.e. if there is an element in that reduces with respect to , we return the empty set.

Each recursive call will terminate, since we add an element to that will reduce an S-polynomial to zero, which could not be reduced to zero before.

For the correctness discussion, one observes that lines 18 serve the purpose to split the computation based on the reducibility of the elements in the initial set . If an element factorizes in more than one way, we recursively call FGBG with as the generator set for each maximal right hand factor of . Hence, the left ideal generated by will contain , and thus will be contained in the intersection of all of them, as required.

As already mentioned in the termination discussion, lines 1025 describe the Buchberger algorithm. After computing an S-polynomial , we check for its reducibility. If there is more than one maximal right factor of , we call FGBG recursively and add to our set . Here, we have again a guarantee that the left ideal generated by is a subset of the left ideal generated by .

The additional constraints that we impose on each recursive call enable us to minimize our computations, but do not violate the subset property. In the end, it is ensured that in all computed constrained Gröbner tuples , no element in lies in the left ideal generated by .

Example 4

Let us execute FGBG on an example. Let

be a subset of the first Weyl algebra . We assume that , and that our ordering is the degree reverse lexicographic one with . This example is taken from the Singular manual [10] (and it is a Gröbner basis for the left ideal ; hence we would expect the output with our chosen to be ). Each element factors separately as

respectively

Hence, in line 5, FGBG will return two recursive calls of itself, namely

For simplicity, we will ignore the first call, as contains , which also appears in the generator list.

Furthermore, the new element only has one possible factorization. Therefore, we consider now the factorizations of . This leads again in line 5 to two recursive calls:

As before, we can ignore the first recursive call. Thus, we are left with to proceed on line 9.

The normal form of the S-polynomial of and is equal to zero. Further, the normal form of with respect to , is equal to zero, i.e. is a right divisor of . Hence, we can omit and our complete Gröbner basis is given by . Since , our algorithm returns as final output.

Note, that if we would have chosen in the beginning, the output of our algorithm would have been

i.e. we recover in this case.

Remark 1

One can also insert an early termination criterion inside Algorithm 2, namely after at least one factorized constrained Gröbner tuple has been found. This is in the commutative case motivated by the fact that in practice users are often not interested in all the elements in a variety but would be content with at least one. For example, the computer algebra system Reduce can be instructed to stop after finding one factorized Gröbner basis (see [16]). In the non-commutative case, we can only hope for partial solutions in general, but a mechanism to stop a computation once at least one is found is also desirable.

5 Conclusions

An algorithm for factoring elements in -algebras, where the underlying field has the property that we are able to extract all possible -roots of any polynomial in , has been shown (Algorithm 1).

This algorithm and the FFD-property of -algebras enable us to propose a generalization of the factorized Gröbner basis algorithm for -algebras (Algorithm 2).

A future work would be to identify improvements to Algorithm 1 for practically interesting -algebras. This has been studied e.g. for partial -differential, differential and difference operators in [12, 13], where the graded structure resp. a certain embedding has been utilized. In the meantime, we have implemented the unimproved version in the Singular library ncfactor.lib, which will be made available shortly. Our implementation identifies beforehand if an improved method is already included in ncfactor.lib for a specific algebra and, if this is the case, re-directs the input there. This modular design allows us to update the function once an improved algorithm is available for a certain -algebra. The use of the function stays the same after such an update.

Another interesting future direction would be to characterize further the connection between the solution space of a polynomial system and the union of the solution spaces of the output of Algorithm 2 when called with . Especially, it would be interesting to identify properties of and , under which both spaces coincide.

An implementation of Algorithm 2 would also be of practical interest, which the authors intend to provide in the near future.

6 Acknowledgments

We thank Eugene Zima, Jason P. Bell and Mark Giesbrecht for insightful discussions we had with them. We are grateful to Wolfram Koepf for the information on internals of Reduce.

References

  1. J. Apel. Gröbnerbasen in nichtkommutativen Algebren und ihre Anwendung. Dissertation, Universität Leipzig, 1988.
  2. J. P. Bell, A. Heinle, and V. Levandovskyy. On noncommutative finite factorization domains. To Appear in the Transactions of the American Mathematical Society; arXiv preprint arXiv:1410.6178, 2014.
  3. B. Buchberger. Introduction to Gröbner Bases. In Gröbner Bases and Applications, pages 3–31. Berlin: Springer, 1997.
  4. J. Bueso, J. Gómez-Torrecillas, and F. Lobillo. Re-filtering and exactness of the Gelfand-Kirillov dimension. Bull. Sci. Math., 125(8):689–715, 2001.
  5. J. Bueso, J. Gómez-Torrecillas, and A. Verschoren. Algorithmic methods in non-commutative algebra. Applications to quantum groups. Dordrecht: Kluwer Academic Publishers, 2003.
  6. P. M. Cohn. Free ideal rings and localization in general rings, volume 3. Cambridge University Press, 2006.
  7. S. R. Czapor. Solving algebraic equations: combining buchberger’s algorithm with multivariate factorization. Journal of Symbolic Computation, 7(1):49–53, 1989.
  8. S. R. Czapor. Solving algebraic equations via buchberger’s algorithm. In Eurocal’87, pages 260–269. Springer, 1989.
  9. J. H. Davenport. Looking at a set of equations. Thechnical report, pages 87–06, 1987.
  10. W. Decker, G.-M. Greuel, G. Pfister, and H. Schönemann. Singular 4-0-2 — A computer algebra system for polynomial computations. http://www.singular.uni-kl.de, 2015.
  11. J. Dixmier. Enveloping algebras, volume 14. Newnes, 1977.
  12. M. Giesbrecht, A. Heinle, and V. Levandovskyy. Factoring linear differential operators in n variables. In Proceedings of the 39th International Symposium on Symbolic and Algebraic Computation, pages 194–201. ACM, 2014.
  13. M. Giesbrecht, A. Heinle, and V. Levandovskyy. Factoring linear partial differential operators in n variables. Journal of Symbolic Computation, pages –, 2015.
  14. H.-G. Gräbe. On factorized gröbner bases. In Computer algebra in science and engineering, pages 77–89. World Scientific. Citeseer, 1995.
  15. H.-G. Gräbe. Triangular systems and factorized Gröbner bases. Springer, 1995.
  16. A. Hearn. Reduce users manual, version 3.8 (2004).
  17. A. Heinle and V. Levandovskyy. Factorization of -homogeneous polynomials in the first (q)-weyl algebra. arXiv preprint arXiv:1302.5674, 2013.
  18. A. Kandri-Rody and V. Weispfenning. Non-commutative gröbner bases in algebras of solvable type. 9(1):1–26, 1990.
  19. V. Levandovskyy. Non-commutative computer algebra for polynomial algebras: Gröbner bases, applications and implementation. Doctoral Thesis, Universität Kaiserslautern, 2005.
  20. H. Li. Noncommutative Gröbner bases and filtered-graded transfer. Springer, 2002.
  21. E. W. Mayr and A. R. Meyer. The complexity of the word problems for commutative semigroups and polynomial ideals. Advances in mathematics, 46(3):305–329, 1982.
  22. W. M. Seiler. Involution. The formal theory of differential equations and its applications in computer algebra. Algorithms and Computation in Mathematics 24. Berlin:Springer, 2010.
  23. H. Tsai. Algorithms for algebraic analysis. PhD thesis, University of California at Berkeley, 2000.
  24. H. Tsai. Weyl closure of a linear differential operator. Journal of Symbolic Computation, 29:747–775, 2000.
Comments 0
Request Comment
You are adding the first comment!
How to quickly get a good reply:
  • Give credit where it’s due by listing out the positive aspects of a paper before getting into which changes should be made.
  • Be specific in your critique, and provide supporting evidence with appropriate references to substantiate general statements.
  • Your comment should inspire ideas to flow and help the author improves the paper.

The better we are at sharing our knowledge with each other, the faster we move forward.
""
The feedback must be of minimum 40 characters and the title a minimum of 5 characters
   
Add comment
Cancel
Loading ...
224087
This is a comment super asjknd jkasnjk adsnkj
Upvote
Downvote
""
The feedback must be of minumum 40 characters
The feedback must be of minumum 40 characters
Submit
Cancel

You are asking your first question!
How to quickly get a good answer:
  • Keep your question short and to the point
  • Check for grammar or spelling errors.
  • Phrase it like a question
Test
Test description