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:
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')) Subfield subcode of [7, 3] linear code over GF(16) down to GF(4)
- dimension()#
Return 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()#
Return 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()#
Return 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()#
Return 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() Ring morphism: From: Finite Field in a of size 2^2 To: Finite Field in aa of size 2^4 Defn: a |--> aa^2 + aa
- original_code()#
Return 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()#
Return 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:
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)#
Return an error-corrected codeword from
y
.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)#
Return the 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()#
Return 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)