Top
Back: vanishId
Forward: decodeRandomFL
FastBack:
FastForward:
Up: decodegb_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.10.2.17 sysFL

Procedure from library decodegb.lib (see decodegb_lib).

Usage:
sysFL (check,y,t,e,s); check,y matrix, t,e,s int
 
          - check is a parity check matrix of the code,
          - y is a received word,
          - t the number of errors to correct,
          - e is the extension degree,
          - s is the dimension of the point for the vanishing ideal

Return:
the system of Fitzgerald-Lax for the given decoding problem

Theory:
Based on 'check' of the given linear code, the procedure constructs the corresponding ideal constructed with a generalization of Cooper's philosophy. For basics of the method Fitzgerald-Lax method.

Example:
 
LIB "decodegb.lib";
intvec vopt = option(get);
list l=FLpreprocess(3,1,11,2,"");
def r=l[1];
setring r;
int s_work=l[2];
//the check matrix of [11,6,5] ternary code
matrix h[5][11]=1,0,0,0,0,1,1,1,-1,-1,0,
0,1,0,0,0,1,1,-1,1,0,-1,
0,0,1,0,0,1,-1,1,0,1,-1,
0,0,0,1,0,1,-1,0,1,-1,1,
0,0,0,0,1,1,0,-1,-1,1,1;
matrix g=dual_code(h);
matrix x[1][6];
matrix y[1][11]=encode(x,g);
//disturb with 2 errors
matrix rec[1][11]=errorInsert(y,list(2,4),list(1,-1));
//the Fitzgerald-Lax system
ideal sys=sysFL(h,rec,2,1,s_work);
print(sys);
==> x1(3)^3-x1(3),
==> x1(2)^3-x1(2),
==> x1(3)^2*x1(1)-x1(3)*x1(1),
==> x1(2)*x1(1),
==> x1(1)^2-x1(1),
==> x1(6)^3-x1(6),
==> x1(5)^3-x1(5),
==> x1(6)^2*x1(4)-x1(6)*x1(4),
==> x1(5)*x1(4),
==> x1(4)^2-x1(4),
==> x1(1)^3-x1(1),
==> x1(4)^3-x1(4),
==> e(1)^2-1,
==> e(2)^2-1,
==> -e(2)*x1(6)^2+e(2)*x1(6)*x1(5)^2-e(2)*x1(6)*x1(4)+e(2)*x1(5)^2+e(2)*x1(5)\
   +e(2)*x1(4)+e(2)-e(1)*x1(3)^2+e(1)*x1(3)*x1(2)^2-e(1)*x1(3)*x1(1)+e(1)*x1\
   (2)^2+e(1)*x1(2)+e(1)*x1(1)+e(1),
==> -e(2)*x1(6)^2+e(2)*x1(6)*x1(5)^2+e(2)*x1(6)*x1(5)+e(2)*x1(6)*x1(4)-e(2)*x\
   1(6)-e(2)*x1(5)^2+e(2)*x1(5)-e(1)*x1(3)^2+e(1)*x1(3)*x1(2)^2+e(1)*x1(3)*x\
   1(2)+e(1)*x1(3)*x1(1)-e(1)*x1(3)-e(1)*x1(2)^2+e(1)*x1(2)-1,
==> -e(2)*x1(6)^2*x1(5)^2+e(2)*x1(6)^2*x1(5)-e(2)*x1(6)^2-e(2)*x1(6)*x1(5)^2+\
   e(2)*x1(6)*x1(5)+e(2)*x1(6)*x1(4)+e(2)*x1(6)+e(2)*x1(5)^2-e(2)*x1(5)+e(2)\
   *x1(4)-e(1)*x1(3)^2*x1(2)^2+e(1)*x1(3)^2*x1(2)-e(1)*x1(3)^2-e(1)*x1(3)*x1\
   (2)^2+e(1)*x1(3)*x1(2)+e(1)*x1(3)*x1(1)+e(1)*x1(3)+e(1)*x1(2)^2-e(1)*x1(2\
   )+e(1)*x1(1),
==> -e(2)*x1(6)^2*x1(5)^2-e(2)*x1(6)^2*x1(5)+e(2)*x1(6)*x1(5)^2-e(2)*x1(6)*x1\
   (4)+e(2)*x1(5)-e(2)*x1(4)-e(1)*x1(3)^2*x1(2)^2-e(1)*x1(3)^2*x1(2)+e(1)*x1\
   (3)*x1(2)^2-e(1)*x1(3)*x1(1)+e(1)*x1(2)-e(1)*x1(1)+1,
==> e(2)*x1(6)^2*x1(5)+e(2)*x1(4)+e(1)*x1(3)^2*x1(2)+e(1)*x1(1)
option(redSB);
ideal red_sys=std(sys);
red_sys;
==> red_sys[1]=x1(1)
==> red_sys[2]=x1(2)^2-x1(2)
==> red_sys[3]=x1(3)+x1(2)-1
==> red_sys[4]=e(1)-x1(2)-1
==> red_sys[5]=x1(4)
==> red_sys[6]=x1(5)+x1(2)-1
==> red_sys[7]=x1(6)-x1(2)
==> red_sys[8]=e(2)+x1(2)+1
// read the solutions from this redGB
// the points are (0,0,1) and (0,1,0) with error values 1 and -1 resp.
// use list points to find error positions;
points;
==> [1]:
==>    _[1,1]=0
==>    _[2,1]=0
==>    _[3,1]=0
==> [2]:
==>    _[1,1]=0
==>    _[2,1]=0
==>    _[3,1]=1
==> [3]:
==>    _[1,1]=0
==>    _[2,1]=0
==>    _[3,1]=-1
==> [4]:
==>    _[1,1]=0
==>    _[2,1]=1
==>    _[3,1]=0
==> [5]:
==>    _[1,1]=0
==>    _[2,1]=1
==>    _[3,1]=1
==> [6]:
==>    _[1,1]=0
==>    _[2,1]=1
==>    _[3,1]=-1
==> [7]:
==>    _[1,1]=0
==>    _[2,1]=-1
==>    _[3,1]=0
==> [8]:
==>    _[1,1]=0
==>    _[2,1]=-1
==>    _[3,1]=1
==> [9]:
==>    _[1,1]=0
==>    _[2,1]=-1
==>    _[3,1]=-1
==> [10]:
==>    _[1,1]=1
==>    _[2,1]=0
==>    _[3,1]=0
==> [11]:
==>    _[1,1]=1
==>    _[2,1]=0
==>    _[3,1]=1
==> [12]:
==>    _[1,1]=1
==>    _[2,1]=0
==>    _[3,1]=-1
==> [13]:
==>    _[1,1]=1
==>    _[2,1]=1
==>    _[3,1]=0
==> [14]:
==>    _[1,1]=1
==>    _[2,1]=1
==>    _[3,1]=1
==> [15]:
==>    _[1,1]=1
==>    _[2,1]=1
==>    _[3,1]=-1
==> [16]:
==>    _[1,1]=1
==>    _[2,1]=-1
==>    _[3,1]=0
==> [17]:
==>    _[1,1]=1
==>    _[2,1]=-1
==>    _[3,1]=1
==> [18]:
==>    _[1,1]=1
==>    _[2,1]=-1
==>    _[3,1]=-1
==> [19]:
==>    _[1,1]=-1
==>    _[2,1]=0
==>    _[3,1]=0
==> [20]:
==>    _[1,1]=-1
==>    _[2,1]=0
==>    _[3,1]=1
==> [21]:
==>    _[1,1]=-1
==>    _[2,1]=0
==>    _[3,1]=-1
==> [22]:
==>    _[1,1]=-1
==>    _[2,1]=1
==>    _[3,1]=0
==> [23]:
==>    _[1,1]=-1
==>    _[2,1]=1
==>    _[3,1]=1
==> [24]:
==>    _[1,1]=-1
==>    _[2,1]=1
==>    _[3,1]=-1
==> [25]:
==>    _[1,1]=-1
==>    _[2,1]=-1
==>    _[3,1]=0
==> [26]:
==>    _[1,1]=-1
==>    _[2,1]=-1
==>    _[3,1]=1
==> [27]:
==>    _[1,1]=-1
==>    _[2,1]=-1
==>    _[3,1]=-1
option(set,vopt);
See also: sysQE.


Top Back: vanishId Forward: decodeRandomFL FastBack: FastForward: Up: decodegb_lib Top: Singular Manual Contents: Table of Contents Index: Index About: About this document
            User manual for Singular version 4.3.2, 2023, generated by texi2html.