[cb8dc97] | 1 | LIB "tst.lib"; |
---|
| 2 | tst_init(); |
---|
| 3 | |
---|
| 4 | LIB "brnoeth.lib"; |
---|
| 5 | |
---|
| 6 | list L=list(); |
---|
| 7 | L[1]="a"; |
---|
| 8 | L[2]="b"; |
---|
| 9 | L[3]="c"; |
---|
| 10 | L[4]="d"; |
---|
| 11 | intvec P=1,3,4,2; |
---|
| 12 | permute_L(L,P); |
---|
[399ac9] | 13 | kill L,P; |
---|
[cb8dc97] | 14 | |
---|
| 15 | ring s=2,T,lp; |
---|
| 16 | matrix G[3][7]=1,0,1,0,1,0,1,0,1,1,0,0,1,1,0,0,0,1,1,1,1; |
---|
| 17 | print(G); |
---|
| 18 | matrix H=dual_code(G); |
---|
| 19 | print(H); |
---|
[399ac9] | 20 | kill s; |
---|
[cb8dc97] | 21 | |
---|
| 22 | ring s=3,T,lp; |
---|
| 23 | matrix C[2][5]=0,1,0,1,1,0,1,0,0,1; |
---|
| 24 | print(C); |
---|
| 25 | list L=sys_code(C); |
---|
| 26 | print(L[1]); |
---|
| 27 | print(L[2]); |
---|
| 28 | L[3]; |
---|
| 29 | print(L[1]*transpose(L[2])); |
---|
[399ac9] | 30 | kill s; |
---|
[cb8dc97] | 31 | |
---|
| 32 | ring s=2,(x,y),lp; |
---|
| 33 | ideal I=x4+x,y4+y; |
---|
| 34 | list L=closed_points(I); |
---|
| 35 | L; |
---|
| 36 | I=x8+x,y8+y; |
---|
| 37 | L=closed_points(I); |
---|
| 38 | L; |
---|
| 39 | I=x16+x,y16+y; |
---|
| 40 | L=closed_points(I); |
---|
| 41 | L; |
---|
[399ac9] | 42 | kill s; |
---|
[cb8dc97] | 43 | |
---|
| 44 | ring r=2,(x,y),lp; |
---|
| 45 | poly f; |
---|
| 46 | ideal I; |
---|
| 47 | intvec DD; |
---|
| 48 | intvec G,D,F; |
---|
| 49 | |
---|
| 50 | // KLEIN quartic over F_4 (p=2) |
---|
| 51 | |
---|
| 52 | f=x3y+y3+x; |
---|
| 53 | list KLEIN=Adj_div(f); |
---|
[b2d5b9] | 54 | KLEIN=NSplaces(1..5,KLEIN); |
---|
[cb8dc97] | 55 | def R=KLEIN[1][2]; |
---|
| 56 | setring R; |
---|
| 57 | G=4,4; |
---|
| 58 | list LG=BrillNoether(G,KLEIN); |
---|
| 59 | LG; |
---|
| 60 | G=6,0,0,6; |
---|
| 61 | LG=BrillNoether(G,KLEIN); |
---|
| 62 | LG; |
---|
| 63 | G=5,-1,3; |
---|
| 64 | LG=BrillNoether(G,KLEIN); |
---|
| 65 | LG; |
---|
| 66 | list WS=Weierstrass(1,10,KLEIN); |
---|
| 67 | WS[1]; |
---|
| 68 | WS[2]; |
---|
| 69 | KLEIN=extcurve(3,KLEIN); |
---|
| 70 | KLEIN; |
---|
| 71 | def RP=KLEIN[1][5]; |
---|
| 72 | setring RP; |
---|
| 73 | size(POINTS); |
---|
| 74 | def RR=KLEIN[1][4]; |
---|
| 75 | setring RR; |
---|
| 76 | G=5,5,5; |
---|
| 77 | D=4..24; |
---|
| 78 | matrix CK=AGcode_Omega(G,D,KLEIN); |
---|
| 79 | print(CK); |
---|
| 80 | matrix HK=dual_code(CK); |
---|
| 81 | print(HK); |
---|
| 82 | list SK=sys_code(CK); |
---|
| 83 | print(SK[1]); |
---|
| 84 | print(SK[2]); |
---|
| 85 | SK[3]; |
---|
| 86 | setring r; |
---|
[399ac9] | 87 | kill R,RR,RP; |
---|
[cb8dc97] | 88 | |
---|
| 89 | // HERMITE curve over F_4 (p=2) |
---|
| 90 | |
---|
| 91 | f=x3+y2+y; |
---|
| 92 | list HC2=Adj_div(f); |
---|
[b2d5b9] | 93 | HC2=NSplaces(1..5,HC2); |
---|
[cb8dc97] | 94 | HC2=extcurve(2,HC2); |
---|
| 95 | def RP=HC2[1][5]; |
---|
| 96 | setring RP; |
---|
| 97 | size(POINTS); |
---|
| 98 | def projR=HC2[1][2]; |
---|
| 99 | setring projR; |
---|
| 100 | Weierstrass(1,12,HC2); |
---|
| 101 | def ER2=HC2[1][4]; |
---|
| 102 | setring ER2; |
---|
[399ac9] | 103 | kill projR,RP; |
---|
[cb8dc97] | 104 | G=5; |
---|
| 105 | D=2..9; |
---|
| 106 | matrix C2=AGcode_Omega(G,D,HC2); |
---|
| 107 | print(C2); |
---|
| 108 | list SC2=sys_code(C2); |
---|
| 109 | print(SC2[1]); |
---|
| 110 | print(SC2[2]); |
---|
| 111 | SC2[3]; |
---|
| 112 | matrix H2=dual_code(C2); |
---|
| 113 | print(H2); |
---|
| 114 | list SH2=sys_code(H2); |
---|
| 115 | print(SH2[1]); |
---|
| 116 | print(SH2[2]); |
---|
| 117 | SH2[3]; |
---|
| 118 | F=2; |
---|
| 119 | list SV2=prepSV(G,D,F,HC2); |
---|
| 120 | matrix y[1][8]; |
---|
| 121 | y[1,3]=a; |
---|
| 122 | print(decodeSV(y,SV2)); |
---|
| 123 | y[1,3]=0; |
---|
| 124 | y[1,6]=1; |
---|
| 125 | print(decodeSV(y,SV2)); |
---|
| 126 | killall(); |
---|
| 127 | |
---|
| 128 | // HERMITE curve over F_9 (p=3) |
---|
| 129 | |
---|
| 130 | ring r=3,(x,y),lp; |
---|
| 131 | list HC3=Adj_div(y3+y-x4); |
---|
[b2d5b9] | 132 | HC3=NSplaces(1..3,HC3); |
---|
[cb8dc97] | 133 | HC3=extcurve(2,HC3); |
---|
| 134 | def projR=HC3[1][2]; |
---|
| 135 | setring projR; |
---|
| 136 | Weierstrass(1,15,HC3); |
---|
| 137 | def RP=HC3[1][5]; |
---|
| 138 | setring RP; |
---|
| 139 | size(POINTS); |
---|
| 140 | def ER3=HC3[1][4]; |
---|
| 141 | setring ER3; |
---|
| 142 | intvec G=15; |
---|
| 143 | intvec D=2..28; |
---|
| 144 | // we already have a rational divisor G and 27 more points over F_9; |
---|
| 145 | // let us construct the corresponding residual AG code of type |
---|
| 146 | // [27,14,>=11] over F_9 |
---|
| 147 | matrix C3=AGcode_Omega(G,D,HC3); |
---|
| 148 | print(C3); |
---|
| 149 | list SC3=sys_code(C3); |
---|
| 150 | print(SC3[1]); |
---|
| 151 | print(SC3[2]); |
---|
| 152 | SC3[3]; |
---|
| 153 | matrix H3=dual_code(C3); |
---|
| 154 | print(H3); |
---|
| 155 | list SH3=sys_code(H3); |
---|
| 156 | print(SH3[1]); |
---|
| 157 | print(SH3[2]); |
---|
| 158 | SH3[3]; |
---|
| 159 | // we can correct 3 errors and the genus is 3, thus F must have |
---|
| 160 | // degree 6 and support disjoint to that of D : |
---|
| 161 | intvec F=6; |
---|
| 162 | list SV3=prepSV(G,D,F,HC3); |
---|
| 163 | // now we produce 3 errors on the zero-codeword : |
---|
| 164 | matrix y[1][27]; |
---|
| 165 | y[1,1]=1; |
---|
| 166 | y[1,2]=a; |
---|
| 167 | y[1,3]=1; |
---|
| 168 | print(decodeSV(y,SV3)); |
---|
| 169 | y[1,1]=0; |
---|
| 170 | y[1,2]=a; |
---|
| 171 | y[1,10]=a+1; |
---|
| 172 | y[1,3]=0; |
---|
| 173 | y[1,21]=1; |
---|
| 174 | print(decodeSV(y,SV3)); |
---|
| 175 | y[1,4]=a; |
---|
| 176 | y[1,2]=0; |
---|
| 177 | y[1,12]=a; |
---|
| 178 | y[1,10]=0; |
---|
| 179 | y[1,21]=0; |
---|
| 180 | y[1,26]=a+1; |
---|
| 181 | print(decodeSV(y,SV3)); |
---|
| 182 | |
---|
| 183 | // killall(); |
---|
| 184 | |
---|
[4e6fa5f] | 185 | // char 3 ! |
---|
| 186 | |
---|
| 187 | ring r=3,(x,y),dp; |
---|
| 188 | list C=Adj_div(2x+x3+2x5+(1+x2+x4)*y4+x6y12); |
---|
| 189 | C=NSplaces(1..2,C); |
---|
| 190 | C=extcurve(2,C); |
---|
| 191 | |
---|
| 192 | def SS1=C[1][5]; |
---|
| 193 | setring SS1; |
---|
| 194 | POINTS; |
---|
| 195 | |
---|
| 196 | setring r; |
---|
| 197 | def SS2=C[5][2][1]; |
---|
| 198 | setring SS2; |
---|
| 199 | |
---|
| 200 | def RR=C[1][2]; |
---|
| 201 | setring RR; |
---|
| 202 | list WS=Weierstrass(17,6,C); |
---|
| 203 | WS; |
---|
| 204 | |
---|
[9a44a0f] | 205 | tst_status(1);$ |
---|
[cb8dc97] | 206 | |
---|