- edited description
Flatten punctured codes
This issue has two objectives:
-
discuss the implementation and
-
find concrete examples.
Implementation
Class-centric: Code a
of class A
has method a.punctured_representation(P)
which takes a list of punctured points P
and returns an code of some class B
, being a rich representation of a
punctured at those points.
If one already has a_punc = PuncturedCode(a, P)
then a_punc.flatten()
returns the same as a.punctured_representation(P)
.
The punctured_representation
can be made at construction time, or on the first call of flatten, the former if it's fast to compute on any example we could picture, the latter if it's (very) slow for some families.
So, basically flatten method could be something like that:
@cached_method
flatten(self):
try:
return self.original_code().punctured_representation()
except AttributeError:
return sage.coding.linear_code.AbstractLinearCode.punctured_representation()
Concrete examples
-
(G)RS codes: Class B is also a GRS code where eval points are removed
-
AG codes: same as GRS codes
-
Subfield subcodes:
punctured_representation(P)
should returnSubfieldSubcode(orig_code.punctured_representation(P))
-
Concatenated codes: Puncturing in the right pattern can correspond to puncturing the inner or outer code. But this is a bit artificial.
Comments (3)
-
-
reporter I implemented this mechanism (which I called
structured_representation()
in commit ebcf8d3 revised in 9b9c53a. It works for GRS (it returns a GRS) and for other code families (it returns aLinearCode
).It even works if one perform several puncturing in a row: in that case it roams the chain backwards to identify the original structured code and then calls
structured_representation
on this one with an updated list of punctured positions.An example is given lines 322 to 338 in
test_punctured.sheet
. -
reporter - changed status to resolved
See #19422
- Log in to comment