#19511: q-ary symmetric channel class for coding theory
-------------------------+-------------------------------------------------
       Reporter:         |        Owner:
  dlucas                 |       Status:  needs_review
           Type:         |    Milestone:  sage-6.10
  enhancement            |   Resolution:
       Priority:  major  |    Merged in:
      Component:         |    Reviewers:
  coding theory          |  Work issues:
       Keywords:         |       Commit:
        Authors:  David  |  429b2902c76c94d63e0d9ab748fdbe6a5a100219
  Lucas                  |     Stopgaps:
Report Upstream:  N/A    |
         Branch:         |
  u/dlucas/qsc           |
   Dependencies:         |
-------------------------+-------------------------------------------------

Comment (by jsrn):

 Hi,

 > Well, I did that in the case one reads only the documentation for a
 channel class, and not the abstract class one. If you think it's useless,
 I'm ok to remove it.

 I don't think it belongs there. But the text is nice, so perhaps it can be
 moved/merged somewhere else?

 > Done. Note that I wasn't able to find an example of a Sigma which can be
 of the form Sigma^n
 > but can not have a `random_element` method...

 Hmm, I'm worried that the check for the "dimension" method is not the
 right thing to do. For instance, the following structure has a
 "dimension":

 {{{
    X = CombinatorialFreeModule(QQ, [1,2])
 }}}

 But I think that the last line of your `transmit_unsafe` is going to blow
 up on this structure. I don't think there is a bullet-proof-while-flexible
 way of checking for what we want. So perhaps your check at construction
 time could be a dummy `transmit_unsafe` call, and if that throws an
 exception, catch it and throw another exception telling the user that
 apparently his input space is not satisfactory.

 Another thing: you added some text saying "the input space has to be a
 vector space", but if `\Sigma` is not a field, then `\Sigma^3` is not a
 vector space: it is a free module with a basis. Just write something like
 I did in the docstring that we check input space has the form `\Sigma^n`.

 > No need to insist, it's done ;) These two methods can be called on any
 instance of the class, with `t` as parameter. Maybe it can be better to
 propose generic methods, which take `epsilon`, `t` and
 `input_space.dimension()` as parameters, so the user can actually look for
 the best epsilon without having to construct the channel... As you prefer.

 Cool! I think having them available only non-static, after construction is
 completely fine. Your implementation of `at_most_t_errors` should sum over
 `exactly_t_errors` to avoid code-replication. I'm pretty sure you have an
 off-by-one error in the `exactly_t_errors` as well, since you're not
 summing the `t`'th error.

 Best,
 Johan

--
Ticket URL: <http://trac.sagemath.org/ticket/19511#comment:11>
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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to