Subfield subcode¶
Let \(C\) be a \([n, k]\) code over \(\GF{q^t}\). Let \(Cs = \{c \in C | \forall i, c_i \in \GF{q}\}\), \(c_i\) being the \(i\)-th coordinate of \(c\).
\(Cs\) is called the subfield subcode of \(C\) over \(\GF{q}\)
-
class
sage.coding.subfield_subcode.
SubfieldSubcode
(original_code, subfield, embedding=None)¶ Bases:
sage.coding.linear_code.AbstractLinearCode
Representation of a subfield subcode.
INPUT:
original_code
– the codeself
comes from.subfield
– the base field ofself
.embedding
– (default:None
) an homomorphism fromsubfield
tooriginal_code
’s base field. IfNone
is provided, it will default to the first homomorphism of the list of homomorphisms Sage can build.
EXAMPLES:
sage: C = codes.random_linear_code(GF(16, 'aa'), 7, 3) sage: codes.SubfieldSubcode(C, GF(4, 'a')) doctest:...: FutureWarning: This class/method/function is marked as experimental. It, its functionality or its interface might change without a formal deprecation. See http://trac.sagemath.org/20284 for details. Subfield subcode of [7, 3] linear code over GF(16) down to GF(4)
-
dimension
()¶ Returns the dimension of
self
.EXAMPLES:
sage: C = codes.GeneralizedReedSolomonCode(GF(16, 'aa').list()[:13], 5) sage: Cs = codes.SubfieldSubcode(C, GF(4, 'a')) sage: Cs.dimension() 3
-
dimension_lower_bound
()¶ Returns a lower bound for the dimension of
self
.EXAMPLES:
sage: C = codes.random_linear_code(GF(16, 'aa'), 7, 3) sage: Cs = codes.SubfieldSubcode(C, GF(4, 'a')) sage: Cs.dimension_lower_bound() -1
-
dimension_upper_bound
()¶ Returns an upper bound for the dimension of
self
.EXAMPLES:
sage: C = codes.random_linear_code(GF(16, 'aa'), 7, 3) sage: Cs = codes.SubfieldSubcode(C, GF(4, 'a')) sage: Cs.dimension_upper_bound() 3
-
embedding
()¶ Returns the field embedding between the base field of
self
and the base field of its original code.EXAMPLES:
sage: C = codes.random_linear_code(GF(16, 'aa'), 7, 3) sage: Cs = codes.SubfieldSubcode(C, GF(4, 'a')) sage: Cs.embedding() Relative field extension between Finite Field in aa of size 2^4 and Finite Field in a of size 2^2
-
original_code
()¶ Returns the original code of
self
.EXAMPLES:
sage: C = codes.random_linear_code(GF(16, 'aa'), 7, 3) sage: Cs = codes.SubfieldSubcode(C, GF(4, 'a')) sage: Cs.original_code() [7, 3] linear code over GF(16)
-
parity_check_matrix
()¶ Returns a parity check matrix of
self
.EXAMPLES:
sage: C = codes.GeneralizedReedSolomonCode(GF(16, 'aa').list()[:13], 5) sage: Cs = codes.SubfieldSubcode(C, GF(4, 'a')) sage: Cs.parity_check_matrix() [ 1 0 0 0 0 0 0 0 0 0 1 a + 1 a + 1] [ 0 1 0 0 0 0 0 0 0 0 a + 1 0 a] [ 0 0 1 0 0 0 0 0 0 0 a + 1 a 0] [ 0 0 0 1 0 0 0 0 0 0 0 a + 1 a] [ 0 0 0 0 1 0 0 0 0 0 a + 1 1 a + 1] [ 0 0 0 0 0 1 0 0 0 0 1 1 1] [ 0 0 0 0 0 0 1 0 0 0 a a 1] [ 0 0 0 0 0 0 0 1 0 0 a 1 a] [ 0 0 0 0 0 0 0 0 1 0 a + 1 a + 1 1] [ 0 0 0 0 0 0 0 0 0 1 a 0 a + 1]
-
class
sage.coding.subfield_subcode.
SubfieldSubcodeOriginalCodeDecoder
(code, original_decoder=None, **kwargs)¶ Bases:
sage.coding.decoder.Decoder
Decoder decoding through a decoder over the original code of
code
.INPUT:
code
– The associated code of this decoderoriginal_decoder
– (default:None
) The decoder that will be used over the original code. It has to be a decoder object over the original code. If it is set toNone
, the default decoder over the original code will be used.**kwargs
– All extra arguments are forwarded to original code’s decoder
EXAMPLES:
sage: C = codes.GeneralizedReedSolomonCode(GF(16, 'aa').list()[:13], 5) sage: Cs = codes.SubfieldSubcode(C, GF(4, 'a')) sage: codes.decoders.SubfieldSubcodeOriginalCodeDecoder(Cs) Decoder of Subfield subcode of [13, 5, 9] Reed-Solomon Code over GF(16) down to GF(4) through Gao decoder for [13, 5, 9] Reed-Solomon Code over GF(16)
-
decode_to_code
(y)¶ Corrects the errors in
word
and returns a codeword.EXAMPLES:
sage: C = codes.GeneralizedReedSolomonCode(GF(16, 'aa').list()[:13], 5) sage: Cs = codes.SubfieldSubcode(C, GF(4, 'a')) sage: D = codes.decoders.SubfieldSubcodeOriginalCodeDecoder(Cs) sage: Chan = channels.StaticErrorRateChannel(Cs.ambient_space(), D.decoding_radius()) sage: c = Cs.random_element() sage: y = Chan(c) sage: c == D.decode_to_code(y) True
-
decoding_radius
(**kwargs)¶ Returns maximal number of errors
self
can decode.INPUT:
kwargs
– Optional arguments are forwarded to original decoder’ssage.coding.decoder.Decoder.decoding_radius()
method.
EXAMPLES:
sage: C = codes.GeneralizedReedSolomonCode(GF(16, 'aa').list()[:13], 5) sage: Cs = codes.SubfieldSubcode(C, GF(4, 'a')) sage: D = codes.decoders.SubfieldSubcodeOriginalCodeDecoder(Cs) sage: D.decoding_radius() 4
-
original_decoder
()¶ Returns the decoder over the original code that will be used to decode words of
sage.coding.decoder.Decoder.code()
.EXAMPLES:
sage: C = codes.GeneralizedReedSolomonCode(GF(16, 'aa').list()[:13], 5) sage: Cs = codes.SubfieldSubcode(C, GF(4, 'a')) sage: D = codes.decoders.SubfieldSubcodeOriginalCodeDecoder(Cs) sage: D.original_decoder() Gao decoder for [13, 5, 9] Reed-Solomon Code over GF(16)