#### D.10.2.7 sysQE

Procedure from library `decodegb.lib` (see decodegb_lib).

Usage:
  sysQE(check,y,t,[fieldeq,formal]);check,y matrix;t,fieldeq,formal int

              - check is a parity check matrix of the code
              - y is a received word,
              - t the number of errors to be corrected,
              - if fieldeq=1, then field equations are added,
              - if formal=0, field equations on (known) syndrome variables
                are not added, in order to add them (note that the exponent should
                be equal to the number of elements in the INITIAL alphabet) one
                needs to set formal>0 for the exponent

Return:
  the ring to work with together with the resulting system called 'qe'

Theory:
  Based on 'check' of the given linear code, the procedure constructs the corresponding ideal that gives an opportunity to compute unknown syndrome of the received word y. After computing the unknown syndromes one is able to solve the decoding problem. For basics of the method Decoding method based on quadratic equations.

Example:

    LIB "decodegb.lib";
    intvec v = option(get);
    //correct 2 errors in [7,3] 8-ary code RS code
    int t=2; int q=8; int n=7; int redun=4;
    ring r=(q,a),x,dp;
    matrix h_full=genMDSMat(n,a);
    matrix h=submat(h_full,1..redun,1..n);
    matrix g=dual_code(h);
    matrix x[1][3]=0,0,1,0;
    matrix y[1][7]=encode(x,g);
    //disturb with 2 errors
    matrix rec[1][7]=errorInsert(y,list(2,4),list(1,a));
    //generate the system
    def A=sysQE(h,rec,t);
    setring A;
    print(qe);
    ==> U(1)+a^3,
    ==> U(2)+a^2,
    ==> U(3)+a^6,
    ==> U(4),
    ==> V(1)*U(1)+V(2)*U(2)+U(3),
    ==> V(1)*U(2)+V(2)*U(3)+U(4),
    ==> V(1)*U(3)+V(2)*U(4)+U(5),
    ==> V(1)*U(4)+V(2)*U(5)+U(6),
    ==> V(1)*U(5)+V(2)*U(6)+U(7),
    ==> V(1)*U(6)+V(2)*U(7)+U(1),
    ==> V(2)*U(1)+V(1)*U(7)+U(2)
    //let us decode
    option(redSB);
    ideal sys_qe=std(qe);
    print(sys_qe);
    ==> U(7)+a,
    ==> U(6)+a^3,
    ==> U(5)+a^3,
    ==> U(4),
    ==> U(3)+a^6,
    ==> U(2)+a^2,
    ==> U(1)+a^3,
    ==> V(2)+1,
    ==> V(1)+a^4
    option(set,v);

See also: sysFL.

User manual for Singular version 4-0-3, 2016, generated by texi2html.