#7797: Full interface to letterplace from singular
---------------------------+------------------------------------------------
   Reporter:  burcin       |          Owner:  burcin                            
             
       Type:  enhancement  |         Status:  needs_review                      
             
   Priority:  major        |      Milestone:  sage-4.7                          
             
  Component:  algebra      |       Keywords:  singular, free algebra, 
letterplace            
Work_issues:               |       Upstream:  N/A                               
             
   Reviewer:               |         Author:  Simon King, Michael Brickenstein, 
Burcin Erocal
     Merged:               |   Dependencies:  #11068, #11268                    
             
---------------------------+------------------------------------------------
Changes (by SimonKing):

  * keywords:  singular => singular, free algebra, letterplace


Old description:

> The new aim of this ticket is to add an interface to the
> [http://www.singular.uni-kl.de/Manual/latest/sing_427.htm#SEC480
> letterplace] component of Singular, namely providing
>
>  * A new implementation of free algebras with fast arithmetic.
>  * Degree-wise Gröbner basis computation for twosided homogeneous ideals
> of free algebras.
>  * Normal form computation with respect to such ideals.
>
> and in addition
>
>  * One- and twosided ideals of noncommutative rings.
>  * Quotient rings of such ideals
>
> (Note that the original purpose was merely to compute Groebner bases up
> to a degree bound of two-sided ideals of free algebras, but without
> normal form computation etc.)
>
> Examples are below, in the comments.
>
> Apply trac7797-full_letterplace_wrapper_rel11068.patch
>
> Depends on #11068 #11268

New description:

 The new aim of this ticket is to add an interface to the
 [http://www.singular.uni-kl.de/Manual/latest/sing_427.htm#SEC480
 letterplace] component of Singular, namely providing

  * A new implementation of free algebras with fast arithmetic.
  * Degree-wise Gröbner basis computation for twosided homogeneous ideals
 of free algebras.
  * Normal form computation with respect to such ideals.

 and in addition

  * One- and twosided ideals of noncommutative rings.
  * Quotient rings of such ideals

 (Note that the original purpose was merely to compute Groebner bases up to
 a degree bound of two-sided ideals of free algebras, but without normal
 form computation etc.)

 Examples are below, in the comments.

 Apply

 [attachment:trac7797-full_letterplace_wrapper_rel11068.patch]

 [attachment:trac7797-letterplace_degree_weights.patch]

 Depends on #11068 #11268

--

Comment:

 Meanwhile I implemented two other features:

 '''Uniqueness of parents'''

 We had
 {{{
 sage: F.<x,y,z> = FreeAlgebra(QQ, 3)
 sage: loads(dumps(F)) is F
 False
 }}}

 I rewrote the `FreeAlgebra` constructor using `UniqueFactory`, so that the
 answer above becomes `True`.

 '''Degree weights'''

 The letterplace implementation in Singular is restricted to homogeneous
 ideals, and each generator can only have degree 1. With a little hack, I
 introduced positive integral degree weights for generators, so that we can
 now do:
 {{{
 sage: F.<x,y,z> = FreeAlgebra(QQ, implementation='letterplace',
 degrees=[1,2,3])
 sage: I = F*[x*y+z-y*x,x*y*z-x^6+y^3]*F
 sage: I.groebner_basis(Infinity)
 Twosided Ideal (x*z*z - y*x*x*z - y*x*y*y + y*x*z*x + y*y*y*x + z*x*z +
 z*y*y - z*z*x, x*y - y*x + z, x*x*x*x*z*y*y + x*x*x*z*y*y*x - x*x*x*z*y*z
 - x*x*z*y*x*z + x*x*z*y*y*x*x + x*x*z*y*y*y - x*x*z*y*z*x - x*z*y*x*x*z -
 x*z*y*x*z*x + x*z*y*y*x*x*x + 2*x*z*y*y*y*x - 2*x*z*y*y*z - x*z*y*z*x*x -
 x*z*y*z*y + y*x*z*x*x*x*x*x - 4*y*x*z*x*x*z - 4*y*x*z*x*z*x +
 4*y*x*z*y*x*x*x + 3*y*x*z*y*y*x - 4*y*x*z*y*z + y*y*x*x*x*x*z +
 y*y*x*x*x*z*x - 3*y*y*x*x*z*x*x - y*y*x*x*z*y + 5*y*y*x*z*x*x*x +
 4*y*y*x*z*y*x - 4*y*y*y*x*x*z + 4*y*y*y*x*z*x + 3*y*y*y*y*z +
 4*y*y*y*z*x*x + 6*y*y*y*z*y + y*y*z*x*x*x*x + y*y*z*x*z + 7*y*y*z*y*x*x +
 7*y*y*z*y*y - 7*y*y*z*z*x - y*z*x*x*x*z - y*z*x*x*z*x + 3*y*z*x*z*x*x +
 y*z*x*z*y + y*z*y*x*x*x*x - 3*y*z*y*x*z + 7*y*z*y*y*x*x + 3*y*z*y*y*y -
 3*y*z*y*z*x - 5*y*z*z*x*x*x - 4*y*z*z*y*x + 4*y*z*z*z - z*y*x*x*x*z -
 z*y*x*x*z*x - z*y*x*z*x*x - z*y*x*z*y + z*y*y*x*x*x*x - 3*z*y*y*x*z +
 3*z*y*y*y*x*x + z*y*y*y*y - 3*z*y*y*z*x - z*y*z*x*x*x - 2*z*y*z*y*x +
 2*z*y*z*z - z*z*x*x*x*x*x + 4*z*z*x*x*z + 4*z*z*x*z*x - 4*z*z*y*x*x*x -
 3*z*z*y*y*x + 4*z*z*y*z + 4*z*z*z*x*x + 2*z*z*z*y, x*x*x*x*x*z +
 x*x*x*x*z*x + x*x*x*z*x*x + x*x*z*x*x*x + x*z*x*x*x*x + y*x*z*y - y*y*x*z
 + y*z*z + z*x*x*x*x*x - z*z*y, x*x*x*x*x*x - y*x*z - y*y*y + z*z) of Free
 Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
 }}}
 This and the possibility to compute a complete Gröbner basis (provided a
 finite complete Gröbner basis exists) go beyond what is currently in
 Singular.

 The underlying idea of the degree weights is: Introduce a homogenizing
 variable. By default, it is called `x`, but a different name is chosen if
 there is a name conflict. Here, it is renamed to `x_`. And then, we
 represent a generator `z` of degree `d` internally as `z*x_^(d-1)` (of
 course with non-commutative multiplication).

 Hence, the underlying truncated letterplace ring becomes a bit bigger, and
 in the bigger ring all generators are of degree one. Of course, the
 additional variable is omitted in the string representation. We have for
 example
 {{{
 sage: z
 z
 sage: z.degree()
 3
 sage: z.letterplace_polynomial()
 z*x__1*x__2
 }}}

 As much as I know, with that approach, Gröbner bases are correctly
 computed: If in all polynomials each occurrence of `z` is followed by
 `x_^(d-1)` then all S-polynomials and reductions (computed in the ring
 with additional generator `x_` and with all generators in degree 1) will
 have the same property.

 I know this is a hack, but I guess it may be useful. It certainly will be
 usefull for my current project, because I ''need'' degree weights.

 Apply trac7797-full_letterplace_wrapper_rel11068.patch
 trac7797-letterplace_degree_weights.patch

 Depends on #11068, #11268

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/7797#comment:47>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to