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); |
---|
13 | kill L,P; |
---|
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); |
---|
20 | kill s; |
---|
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])); |
---|
30 | kill s; |
---|
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; |
---|
42 | kill s; |
---|
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); |
---|
54 | KLEIN=NSplaces(1..5,KLEIN); |
---|
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; |
---|
87 | kill R,RR,RP; |
---|
88 | |
---|
89 | // HERMITE curve over F_4 (p=2) |
---|
90 | |
---|
91 | f=x3+y2+y; |
---|
92 | list HC2=Adj_div(f); |
---|
93 | HC2=NSplaces(1..5,HC2); |
---|
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; |
---|
103 | kill projR,RP; |
---|
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); |
---|
132 | HC3=NSplaces(1..3,HC3); |
---|
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 | |
---|
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 | |
---|
205 | tst_status(1);$ |
---|
206 | |
---|