#12224: Language as parent / Word as element
-----------------------------------------------------+----------------------
       Reporter:  vdelecroix                         |         Owner:  
vdelecroix
           Type:  enhancement                        |        Status:  new      
 
       Priority:  major                              |     Milestone:  sage-5.6 
 
      Component:  combinatorics                      |    Resolution:           
 
       Keywords:  word, language, symbolic dynamics  |   Work issues:           
 
Report Upstream:  N/A                                |     Reviewers:           
 
        Authors:  Vincent Delecroix                  |     Merged in:           
 
   Dependencies:  #8920, #13778, #13956, #13957      |      Stopgaps:           
 
-----------------------------------------------------+----------------------
Changes (by vdelecroix):

  * dependencies:  #8920, #13778, #13956 => #8920, #13778, #13956, #13957


Old description:

> This ticket is a prerequisite to further development in the combinatorics
> of words and symbolic dynamical systems (adic language, SFT, ...). It
> concerns the implementation of a class "Language" (= graded set of words)
> as a Parent and a class "Word" as Element.
>
> Roadmap:
>  * Use EnumeratedSets and GradedEnumeratedSets to build a class Language
> and use it as a base class for
> sage.combinat.words.words.Words_over_ordered_alphabet
>  * move into a derived class the current methods of Word that does not
> fit to this framework
>  * Inheritate from Monoid for the language of all words on a given
> alphabet and see the overlap with the code in sage.monoids.*
>  * coercion between different languages (on the top is the FreeMonoid)
>
> To think about:
>  * what should be in the parent, what should be in the element ?
>  * what do we keep of the current methods of Word ?
>  * in general a language is not a monoid... but some of them are
> (FullShift, the words with the same number of each letter, ...). Find a
> way to use the Monoid category in these cases. Remark that a language
> which is also a monoid is completely defined by its irreducible words
> (the word that can not be built from concatenation of smaller words).
>
> see also: #12225, #12227

New description:

 This ticket is a prerequisite to further development in the combinatorics
 of words and symbolic dynamical systems (adic language, SFT, ...). It
 concerns the implementation of a class "Language" (= graded set of words)
 as a Parent and a class "Word" as Element.

 Three categories are created: Languages, FactorialLanguages and Shifts
 that gather several methods of finite and infinite words. For speed reason
 there are base Cython classes for
  * finite word (in sage.combinat.words.finite_word)
  * infinite word (in sage.combinat.words.infinite_word)
  * language (in sage.combinat.languages.language)

 Every implementation must inherit from the class above (it is check in the
 TestSuite of the related categories).

 The previous code of Word is dispatched between the ElementMethods of the
 category and the Cython class FiniteWord. The choice has been made for
 sake of optimization.


 see also: #12225, #12227

--

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/12224#comment:7>
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