Home Online Manual
Top
Back: decodegb_lib
Forward: sysCRHTMindist
FastBack:
FastForward:
Up: decodegb_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.10.2.1 sysCRHT

Procedure from library decodegb.lib (see decodegb_lib).

Usage:
sysCRHT(n,defset,e,q,m,[k]); n,e,q,m,k are int, defset list of int's
 
         - n length of the cyclic code,
         - defset is a list representing the defining set,
         - e the error-correcting capacity,
         - q field size
         - m degree extension of the splitting field,
         - if k>0 additional equations representing the fact that every two
         error positions are either different or at least one of them is zero

Return:
the ring to work with the CRHT-ideal (with Sala's additions), containig an ideal with name 'crht'

Theory:
Based on 'defset' of the given cyclic code, the procedure constructs the corresponding Cooper-Reed-Heleseth-Truong ideal 'crht'. With its help one can solve the decoding problem. For basics of the method Cooper philosophy.

Example:
 
LIB "decodegb.lib";
// binary cyclic [15,7,5] code with defining set (1,3)
intvec v = option(get);
list defset=1,3;           // defining set
int n=15;                  // length
int e=2;                   // error-correcting capacity
int q=2;                   // basefield size
int m=4;                   // degree extension of the splitting field
int sala=1;                // indicator to add additional equations
def A=sysCRHT(n,defset,e,q,m);
setring A;
A;                         // shows the ring we are working in
==> //   characteristic : 2
==> //   1 parameter    : a 
==> //   minpoly        : 0
==> //   number of vars : 6
==> //        block   1 : ordering lp
==> //                  : names    Y(2) Y(1) Z(1) Z(2) X(2) X(1)
==> //        block   2 : ordering C
print(crht);               // the CRHT-ideal
==> Y(2)*Z(2)+Y(1)*Z(1)+X(1),
==> Y(2)*Z(2)^3+Y(1)*Z(1)^3+X(2),
==> X(1)^16+X(1),
==> X(2)^16+X(2),
==> Z(1)^16+Z(1),
==> Z(2)^16+Z(2),
==> Y(1)+1,
==> Y(2)+1
option(redSB);
ideal red_crht=std(crht);  // reduced Groebner basis
print(red_crht);
==> X(1)^16+X(1),
==> X(2)*X(1)^15+X(2),
==> X(2)^8+X(2)^4*X(1)^12+X(2)^2*X(1)^3+X(2)*X(1)^6,
==> Z(2)^2*X(1)+Z(2)*X(1)^2+X(2)+X(1)^3,
==> Z(2)^2*X(2)+Z(2)*X(2)*X(1)+X(2)^2*X(1)^14+X(2)*X(1)^2,
==> Z(2)^16+Z(2),
==> Z(1)+Z(2)+X(1),
==> Y(1)+1,
==> Y(2)+1
//============================
A=sysCRHT(n,defset,e,q,m,sala);
setring A;
print(crht);                // CRHT-ideal with additional equations from Sala
==> Y(2)*Z(2)+Y(1)*Z(1)+X(1),
==> Y(2)*Z(2)^3+Y(1)*Z(1)^3+X(2),
==> X(1)^16+X(1),
==> X(2)^16+X(2),
==> Z(1)^16+Z(1),
==> Z(2)^16+Z(2),
==> Y(1)+1,
==> Y(2)+1,
==> Z(1)^15*Z(2)+Z(1)^14*Z(2)^2+Z(1)^13*Z(2)^3+Z(1)^12*Z(2)^4+Z(1)^11*Z(2)^5+\
   Z(1)^10*Z(2)^6+Z(1)^9*Z(2)^7+Z(1)^8*Z(2)^8+Z(1)^7*Z(2)^9+Z(1)^6*Z(2)^10+Z\
   (1)^5*Z(2)^11+Z(1)^4*Z(2)^12+Z(1)^3*Z(2)^13+Z(1)^2*Z(2)^14+Z(1)*Z(2)^15
option(redSB);
ideal red_crht=std(crht);   // reduced Groebner basis
print(red_crht);
==> X(1)^16+X(1),
==> X(2)*X(1)^15+X(2),
==> X(2)^8+X(2)^4*X(1)^12+X(2)^2*X(1)^3+X(2)*X(1)^6,
==> Z(2)*X(1)^15+Z(2),
==> Z(2)^2+Z(2)*X(1)+X(2)*X(1)^14+X(1)^2,
==> Z(1)+Z(2)+X(1),
==> Y(1)+1,
==> Y(2)+1
red_crht[5];                // general error-locator polynomial for this code
==> Z(2)^2+Z(2)*X(1)+X(2)*X(1)^14+X(1)^2
option(set,v);
See also: sysBin; sysNewton.