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