M:=MatrixAlgebra(Rationals(),16); F:=GF(4); V:=VectorSpace(F,2); VV:=[]; for v in V do Append(~VV,v); end for; qf:= M ! 0; for i in [1..16] do v:=VV[i]; qf[i][i]:= (-1)^(Integers() ! Norm(v[1])); end for; mulw:=M ! 0; for i in [1..16] do v:= VV[i]; vv:=w*v; j:=Position(VV,vv); mulw[j][i]:=1; end for; mulu1:=M ! 0; for i in [1..16] do v:= VV[i]; vv:=v; vv[2]:=v[2]+v[1]^2; j:=Position(VV,vv); mulu1[j][i]:=1; end for; h:= M ! 0; for i in [1..16] do v:= VV[i]; for j in [1..16] do vv:=VV[j]; h[i][j]:= (-1) ^(Integers() ! (Trace(v[1]*vv[2]+vv[1]*v[2]))); end for; end for; h:=1/4*h; G:=sub; Order(G); //96 G; //MatrixGroup(16, Rational Field) of order 96 = 2^5 * 3 //Generators: //[-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] //[ 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0] //[ 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0] //[ 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0] //[ 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0] //[ 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0] //[ 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0] //[ 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0] //[ 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0] //[ 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0] //[ 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0] //[ 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0] //[ 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0] //[ 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0] //[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0] //[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] // //[0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0] //[0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] //[0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0] //[0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0] //[0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0] //[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] //[0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0] //[0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0] //[0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0] //[0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0] //[0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0] //[0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0] //[0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0] //[0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0] //[0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0] //[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] // //[0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0] //[0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0] //[0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0] //[0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0] //[0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] //[0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0] //[0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0] //[0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0] //[0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0] //[0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0] //[0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0] //[0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0] //[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] //[0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0] //[0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0] //[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] // //[1/4 -1/4 -1/4 1/4 -1/4 1/4 1/4 -1/4 -1/4 1/4 1/4 -1/4 1/4 -1/4 -1/4 1/4] //[-1/4 1/4 1/4 -1/4 -1/4 1/4 1/4 -1/4 1/4 -1/4 -1/4 1/4 1/4 -1/4 -1/4 1/4] //[-1/4 1/4 1/4 -1/4 1/4 -1/4 -1/4 1/4 -1/4 1/4 1/4 -1/4 1/4 -1/4 -1/4 1/4] //[1/4 -1/4 -1/4 1/4 1/4 -1/4 -1/4 1/4 1/4 -1/4 -1/4 1/4 1/4 -1/4 -1/4 1/4] //[-1/4 -1/4 1/4 1/4 1/4 1/4 -1/4 -1/4 1/4 1/4 -1/4 -1/4 -1/4 -1/4 1/4 1/4] //[1/4 1/4 -1/4 -1/4 1/4 1/4 -1/4 -1/4 -1/4 -1/4 1/4 1/4 -1/4 -1/4 1/4 1/4] //[1/4 1/4 -1/4 -1/4 -1/4 -1/4 1/4 1/4 1/4 1/4 -1/4 -1/4 -1/4 -1/4 1/4 1/4] //[-1/4 -1/4 1/4 1/4 -1/4 -1/4 1/4 1/4 -1/4 -1/4 1/4 1/4 -1/4 -1/4 1/4 1/4] //[-1/4 1/4 -1/4 1/4 1/4 -1/4 1/4 -1/4 1/4 -1/4 1/4 -1/4 -1/4 1/4 -1/4 1/4] //[1/4 -1/4 1/4 -1/4 1/4 -1/4 1/4 -1/4 -1/4 1/4 -1/4 1/4 -1/4 1/4 -1/4 1/4] //[1/4 -1/4 1/4 -1/4 -1/4 1/4 -1/4 1/4 1/4 -1/4 1/4 -1/4 -1/4 1/4 -1/4 1/4] //[-1/4 1/4 -1/4 1/4 -1/4 1/4 -1/4 1/4 -1/4 1/4 -1/4 1/4 -1/4 1/4 -1/4 1/4] //[1/4 1/4 1/4 1/4 -1/4 -1/4 -1/4 -1/4 -1/4 -1/4 -1/4 -1/4 1/4 1/4 1/4 1/4] //[-1/4 -1/4 -1/4 -1/4 -1/4 -1/4 -1/4 -1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4] //[-1/4 -1/4 -1/4 -1/4 1/4 1/4 1/4 1/4 -1/4 -1/4 -1/4 -1/4 1/4 1/4 1/4 1/4] //[1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4] // mulwt:=M ! 0; for i in [1..16] do v:= VV[i]; vv:=w*v; vv[2]:=w*vv[2]; j:=Position(VV,vv); mulwt[j][i]:=1; end for; E:=1+mulwt+mulwt^2; K:=BasisMatrix(Kernel(1-mulwt)); K; //[1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0] //[0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0] //[0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0] //[0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0] //[0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0] //[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] // Entspricht Bahnen von //1+u, w+u, w^2+u,u,1,0 K:=1/3*K; K[6][16]:=1; Kt:=Transpose(K); KKt:=K*Kt; KKti:=KKt^(-1); qf1:= K*qf*Kt*KKti; mulw1:= K*mulw*Kt*KKti; mulu11:= K*mulu1*Kt*KKti; h1:= K*h*Kt*KKti; G1:=sub; Order(G1); //96 G1; //MatrixGroup(6, Rational Field) of order 96 = 2^5 * 3 //Generators: //[-1 0 0 0 0 0] //[ 0 -1 0 0 0 0] //[ 0 0 -1 0 0 0] //[ 0 0 0 1 0 0] //[ 0 0 0 0 -1 0] //[ 0 0 0 0 0 1] // //[0 1 0 0 0 0] //[0 0 1 0 0 0] //[1 0 0 0 0 0] //[0 0 0 1 0 0] //[0 0 0 0 1 0] //[0 0 0 0 0 1] // //[0 0 0 0 1 0] //[0 0 1 0 0 0] //[0 1 0 0 0 0] //[0 0 0 1 0 0] //[1 0 0 0 0 0] //[0 0 0 0 0 1] // //[ 3/4 -1/4 -1/4 -1/4 -1/4 1/4] //[-1/4 -1/4 3/4 -1/4 -1/4 1/4] //[-1/4 3/4 -1/4 -1/4 -1/4 1/4] //[-1/4 -1/4 -1/4 3/4 -1/4 1/4] //[-1/4 -1/4 -1/4 -1/4 3/4 1/4] //[ 3/4 3/4 3/4 3/4 3/4 1/4] //> k:=KMatrixSpace(Rationals(),3,16) ! 0; k[1][16]:=1; for i in [1..15] do v:=VV[i]; if v[1] eq 0 then k[2][i]:=1/3; else k[3][i]:=1/12; end if; end for; kt:=Transpose(k); kkt:=k*kt; kkti:=kkt^(-1); k; // [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] //1/3* [0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0] //1/12* [1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0] // Entspricht 0, uR^*, R^* qf2:= k*qf*kt*kkti; mulw2:= k*mulw*kt*kkti; mulu12:= k*mulu1*kt*kkti; h2:= k*h*kt*kkti; G2:=sub; Order(G2); //8 //G2; //MatrixGroup(3, Rational Field) of order 2^3 //Generators: //[ 1 0 0] //[ 0 1 0] //[ 0 0 -1] // //[ 1/4 3/4 3] //[ 1/4 3/4 -1] //[ 1/4 -1/4 0] Q:=RationalFunctionField(Rationals()); M:=Q ! MolienSeries(G); M1:=Q ! MolienSeries(G1); M2:=Q ! MolienSeries(G2); // > M; // (t^42 - 2*t^41 + 7*t^40 - 13*t^39 + 73*t^38 - 83*t^37 + 501*t^36 - 469*t^35 + // 2461*t^34 - 1638*t^33 + 8667*t^32 - 4530*t^31 + 23420*t^30 - 9856*t^29 + // 49916*t^28 - 17610*t^27 + 86404*t^26 - 25896*t^25 + 123516*t^24 - 32802*t^23 // + 147402*t^22 - 35386*t^21 + 147402*t^20 - 32802*t^19 + 123516*t^18 - // 25896*t^17 + 86404*t^16 - 17610*t^15 + 49916*t^14 - 9856*t^13 + 23420*t^12 - // 4530*t^11 + 8667*t^10 - 1638*t^9 + 2461*t^8 - 469*t^7 + 501*t^6 - 83*t^5 + // 73*t^4 - 13*t^3 + 7*t^2 - 2*t + 1)/(t^58 - 3*t^57 + t^56 + 4*t^55 - 8*t^54 + // 16*t^53 - 12*t^52 - 8*t^51 + 24*t^50 - 52*t^49 + 60*t^48 - 28*t^47 - 18*t^46 // + 110*t^45 - 162*t^44 + 148*t^43 - 90*t^42 - 98*t^41 + 242*t^40 - 320*t^39 + // 332*t^38 - 104*t^37 - 136*t^36 + 388*t^35 - 555*t^34 + 409*t^33 - 195*t^32 - // 184*t^31 + 516*t^30 - 556*t^29 + 516*t^28 - 184*t^27 - 195*t^26 + 409*t^25 - // 555*t^24 + 388*t^23 - 136*t^22 - 104*t^21 + 332*t^20 - 320*t^19 + 242*t^18 - // 98*t^17 - 90*t^16 + 148*t^15 - 162*t^14 + 110*t^13 - 18*t^12 - 28*t^11 + // 60*t^10 - 52*t^9 + 24*t^8 - 8*t^7 - 12*t^6 + 16*t^5 - 8*t^4 + 4*t^3 + t^2 - // 3*t + 1) // > M1; // (t^12 - t^11 + t^10 - t^9 + t^8 + t^4 - t^3 + t^2 - t + 1)/(t^18 - 2*t^17 + // 2*t^15 - 3*t^14 + 4*t^13 - t^12 - 2*t^11 + 3*t^10 - 4*t^9 + 3*t^8 - 2*t^7 - // t^6 + 4*t^5 - 3*t^4 + 2*t^3 - 2*t + 1) // > M2; // -1/(t^7 - t^6 - t^5 + t^4 - t^3 + t^2 + t - 1) P:=PolynomialRing(Rationals()); N:=P ! Denominator(M); //> N; //s^58 - 3*s^57 + s^56 + 4*s^55 - 8*s^54 + 16*s^53 - 12*s^52 - 8*s^51 + 24*s^50 - //52*s^49 + 60*s^48 - 28*s^47 - 18*s^46 + 110*s^45 - 162*s^44 + 148*s^43 - //90*s^42 - 98*s^41 + 242*s^40 - 320*s^39 + 332*s^38 - 104*s^37 - 136*s^36 + //388*s^35 - 555*s^34 + 409*s^33 - 195*s^32 - 184*s^31 + 516*s^30 - 556*s^29 + //516*s^28 - 184*s^27 - 195*s^26 + 409*s^25 - 555*s^24 + 388*s^23 - 136*s^22 - //104*s^21 + 332*s^20 - 320*s^19 + 242*s^18 - 98*s^17 - 90*s^16 + 148*s^15 - //162*s^14 + 110*s^13 - 18*s^12 - 28*s^11 + 60*s^10 - 52*s^9 + 24*s^8 - 8*s^7 //- 12*s^6 + 16*s^5 - 8*s^4 + 4*s^3 + s^2 - 3*s + 1 //> Factorization(N); //[ //, //, //, //, // //] Factorization(P ! (N*(s+1)^3/((1-s^2)^5*(1-s^3)*(1-s^4)^6*(1-s^6)^4))); //1 Z*(s+1)^3; //s^45 + s^44 + 4*s^43 + 3*s^42 + 53*s^41 + 104*s^40 + 458*s^39 + 858*s^38 + //2474*s^37 + 4839*s^36 + 10667*s^35 + 19018*s^34 + 34193*s^33 + 55481*s^32 + //86078*s^31 + 125990*s^30 + 173466*s^29 + 230402*s^28 + 287430*s^27 + //346462*s^26 + 393648*s^25 + 431930*s^24 + 450648*s^23 + 450648*s^22 + //431930*s^21 + 393648*s^20 + 346462*s^19 + 287430*s^18 + 230402*s^17 + //173466*s^16 + 125990*s^15 + 86078*s^14 + 55481*s^13 + 34193*s^12 + //19018*s^11 + 10667*s^10 + 4839*s^9 + 2474*s^8 + 858*s^7 + 458*s^6 + 104*s^5 //+ 53*s^4 + 3*s^3 + 4*s^2 + s + 1 Z1:=P ! Numerator(M1); Z1; // s^12 - s^11 + s^10 - s^9 + s^8 + s^4 - s^3 + s^2 - s + 1 Z1*(s+1); //s^13 + s^8 + s^5 + 1 N1:=P ! Denominator(M1); Factorization(P ! N1*(s+1)); //[ //, //, //, //, // //] N1*(s+1)/((1-s)*(1-s^2)^2*(1-s^4)^2*(1-s^6)); N2:=P ! Denominator(M2); Factorization(P ! N2); //[ //, //, //, //] N2/((1-s)*(1-s^2)*(1-s^4)); R1:=InvariantRing(G1); R2:=InvariantRing(G2); P1:=PrimaryInvariants(R1); P2:=PrimaryInvariants(R2); S1:=SecondaryInvariants(R1); S2:=SecondaryInvariants(R2); R2; //Invariant Ring //Group: //MatrixGroup(3, Rational Field) of order 2^3 //Generators: //[ 1 0 0] //[ 0 1 0] //[ 0 0 -1] // //[ 1/4 3/4 3] //[ 1/4 3/4 -1] //[ 1/4 -1/4 0] //Coefficient ring: //Rational Field //Primary invariants: //[ //x1 + 3*x2, //x1^2 + 3*x2^2 + 12*x3^2, //x1^4 - 12*x1*x2^3 + 72*x1*x2*x3^2 + 3*x2^4 + 72*x2^2*x3^2 + 120*x3^4 //] //Secondary invariants: //[ //1 //] //Hilbert series: //-1/(t^7 - t^6 - t^5 + t^4 - t^3 + t^2 + t - 1) // s1:=-1/6*(P2[2]-P2[1]^2); P2[3]+18*s1^2; // x1^4 + 18*x1^2*x2^2 + 24*x1*x2^3 + 21*x2^4 + 192*x3^4 // Gewichtszaehler von <(1,1,1,1), (0,u,0,u), (0,0,u,u) > GEN:=KMatrixSpace(GF(4),3,4) ! [1,0,0,1,0,1,0,1,0,0,1,1]; C:=LinearCode(GEN); CompleteWeightEnumerator(C); //$.1^4 + 6*$.1^2*$.2^2 + 6*$.1^2*$.3^2 + 6*$.1^2*$.4^2 + 24*$.1*$.2*$.3*$.4 + $.2^4 + 6*$.2^2*$.3^2 + 6*$.2^2*$.4^2 + $.3^4 + 6*$.3^2*$.4^2 + $.4^4 HammingWeightEnumerator(C); // $.1^4 + 18*$.1^2*$.2^2 + 24*$.1*$.2^3 + 21*$.2^4 // Der Code ist CC:= <(1,1,1,1), uC >. // Gewichtszaehler von CC = 3*64*x3^4 + hwe(C)