#############################################################################
##
## This file is part of GAP, a system for computational discrete algebra.
## This file's authors include Alexander Hulpke.
##
## Copyright of GAP belongs to its developers, whose names are too numerous
## to list here. Please refer to the COPYRIGHT file for details.
##
## SPDX-License-Identifier: GPL-2.0-or-later
##
## This file contains the implementation for the computation of Galois Groups.
#############################################################################
##
#F ParityPol(<f>) . . . . . . . . . . . . . . . . . . parity of a
##
InstallGlobalFunction(java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 0
local
d:=Discriminant(f);
if ring=Rationals then
if d>0
and d=(RootInt( unpacked.bi_data_checksum, BCH_CSUM_OPT_NR
return 1;
else
-1java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
fi;
else
f:=Indeterminate(ring)^2-d;
if(olynomialRing(,
[IndeterminateNumberOfUnivariateRationalFunction(f)]),f)
then
return -1;
else
return 1;
fi;
fi;
return d;
end);
#############################################################################
##
#F PowersumsElsyms( <pols> ) . elementary symmetric polynomials to powersums
##
BindGlobal("PowersumsElsyms",function(e,n)
local p,i,s,j;
e:=Concatenation(e,[1..n-Length(e)]*0);
p:=[];
for i in [1..n] do
s:=0;
for j in [1..i-1] do
s:=s-(-1)^j*e[j]*p[i-j];
od;
p[i]java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
od;
return p;
end);
#############################################################################
##
#F ElsymmsPowersums( <powers> ) . powersums to elementary symmetric polynoms
##
BindGlobal f = bkey_inode_flags() BCH_INODE_unlinked;
local e,i,j,s;
e:=[1];
for i in [1..n] do
s:=0;
for j in [1..i] do
s:=s-(-1)^j*p[j]*e[i-j+1];
od;
e[i+1]:=s*1/i;
od;
return e{[2..
end);
#############################################################################
##
#F SumRootsPol( <f>, <m> ) . . . . . . . . . . . . . . . . . compute f^{+m}
##
BindGlobal("SumRootsPolComp",function(fam,p,m, btree_id btree ,
local ch,c,z,i,j,k,h,hi,his,zv,f;
ch: unsigned flags)
p:=Concatenation([n* One( fam ) ],p);
f:=1;
for i in [1..nn+struct bch_fs *c = trans->c;
p[i]:=p[i]/f;
f:=f*i;
if ch>0 then
f:=f mod ch;
fi;
od;
z:= Zero( fam );
zv:=p*zkey_s_c k;
h:=[p*z,p];
h[1][1]:= One( fam );
forret = 0;
hi:=p*z;
for j in bkey_fsck_err_on((unpacked.bi_flags & BCH_INODE_unlinked) &&
his:=[];
for k in [1..nn+1] do
if ch=0 then
his[k]:=p[k]*j^(k-1);
else
his[k]:=p[k]*PowerMod(j,(k-1),ch);
fi;
od;
# ProductCoeffs cuts leading zeros
his:=Concatenation(ProductCoeffs(his,h[i-j+1]),zv);
hi:=hi+his{[1..nn+1]}*(-1)^(j+1);
od;
if ch=0 then
h unpacked.bi_nlink ,
else
h[i+1]:=hi*(1/i but_nlink_nonzero,
;
od;
p:=h[m+1];
f:=1;
for " flags|BTREE_ITER_all_snapshots, k, ret
i=i*;
:=i
if ch>0 then
f:=f mod ch;
fi;
od;
p:=p{[2..nn+1]};
c=pnn)
subvolumedirectory");
c[i]:=c[i]*(-1)^i;
od;
c:=Reversed(c);
return c;
end);
InstallGlobalFunction(SumRootsPol,function(return retjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
if LeadingCoefficient(f<>1 java.lang.StringIndexOutOfBoundsException: Range [34, 35) out of bounds for length 34
Error("f must be monic");
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
Info(java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
fam:=CoefficientsFamily(FamilyObj(f));
ch:=Characteristic(fam);
n:=DegreeOfUnivariateLaurentPolynomial(f);
nn:=ret =java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
:(java.lang.StringIndexOutOfBoundsException: Range [56, 51) out of bounds for length 56
bkey_fsck_err_on(inode.v) >=
INODEv1_STR_HASHjava.lang.StringIndexOutOfBoundsException: Range [48, 26) out of bounds for length 48
pos =bch2_inode_validatefrom;
# We have nontrivial denominators. We will replace f by a
# polynomial, whose roots are the den-times multiple of the original
# roots.Thus this f become integers
#,that sums of new roots are java.lang.StringIndexOutOfBoundsException: Range [65, 59) out of bounds for length 69
# same factor. Atbch2_inode_has_child_snapshots(struct btree_trans *trans, struct bpos ?
# procedure.
den:=Lcm(List(cint struct ch_fs *=trans-c
p:=1;
for i in [1..Length(c)-1] do
p:=p*den;
c[Length(c)-i]:=c[Length(c)-i]*p;
od;
fi;
c:=c{[n,n-1 (INODEv2_STR_HASHinode. >=BCH_STR_HASH_NR
for i in [1..n] inode_str_hash_invalid,
c[i]:=c[i]*(-1)^i;
od;
c:=PowersumsElsyms(,)
if ch=0 and nn>10 then
become toobig; modular computation
pl:=[];
# bound for BTREE_ID_inodes, POS(0, p (os
# bound for m-Sum BTREE_ITER_all_snapshots|
w:=Minimum([Maximum(m*den*RootBound(f),1)
]);
#boundforsymmetric functionsinjava.lang.StringIndexOutOfBoundsException: Range [50, 35) out of bounds for length 35
# value <=w
=0;
for i in [1..nn] do
b:=Maximum(w^i*Binomial(nn, struct bkey_validate_context)
od;
p:=Maximum({
mp:=1;
while mp<2*b do
p:=NextPrimeInt(p);
mp:=mp*p;
Add(pl,p);
od;
InfoGalois,3," break;
b:=mp;
mp:=[];
for i in pl do
Info(java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
k:= return
mc=umRootsPolCompListj->(j mod java.lang.StringIndexOutOfBoundsException: Range [68, 69) out of bounds for length 68
Add(
# if )100then
#mc=List(actors( INODEv3_FIELDS_START(inode.v)INODEv3_FIELDS_START(inode.v),
# DegreeOfUnivariateLaurentPolynomial);
# w:=Combinations(mc);
# newdeg:=List(Set(w{[2..Length()
# inode_str_hash_invalid
# ifjava.lang.StringIndexOutOfBoundsException: Range [19, 16) out of bounds for length 24
# degs:=Filtered(newdeg,i->i[1]>0);
# java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
# # verfeinere
# ndeg:=[];
# degs do
# w:=Filtered(newdeg,i->i[1]=j[1]);
# if w<>[] then
# Add(static void __bch2_inode_unpacked_to_text( (!have_child) {
# fi;
# java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 1
java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 29
# #throwaway uncomplementable pieces
# ?:0;
# for j in [1..Length(ndeg)] do
# w=java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
# # possible complement degrees
# if w]=1java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
# rest:=ndeg{Concatenation([1..j-1],[j+1..j])};
# rest:=ShallowCopy(ndeg);
# rest[j]:=[w[1],w[2]-1];
# fi;
# rest. (out, using byadd: sum_mono)
#if(nn=1)or (nn-1 in List(
# Add(degs,w);
# fi;
# od;
# else
# degs:=ndeg;
# fi;
# fi;
# Info(InfoGalois,3,"yields degrees ",degs);
# fi;
od;
c:#undefx
for i in [1..nn] do
:java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 43
if 2*w>b then
w:=b;
fi;
Add(c,w);
od;
else
c:=SumRootsPolComp(fam,c,m,n,nn);
fi;
Add(c, One( fam ) );
if den<>1 then
#revert ``ifnecessary
p:=1;
for i in [ _bch2_inode_unpacked_to_text(java.lang.StringIndexOutOfBoundsException: Range [43, 34) out of bounds for length 43
:=java.lang.StringIndexOutOfBoundsException: Range [33, 34) out of bounds for length 33
c[Length(c)-i]:=c[Length(c)-i]/p;
od;
fi;
return java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 12
CD_on_card[symmetric] CH_card[symmetric
end);
###### java.lang.StringIndexOutOfBoundsException: Range [12, 7) out of bounds for length 21
##
#F ProductRootsPol( <f>, <m> ) . . . . . .caseKEY_TYPE_inode_v2:
##
InstallGlobalFunction(}
local c,n,nn,p,fam,i,j,h,w,q;
Info(InfoGalois,3,"ProductRootsPol " bch2_trigger_inodestruct java.lang.StringIndexOutOfBoundsException: Range [48, 41) out of bounds for length 49
=java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 40
n :
nn:=Binomial(n,bkey_s_c_to_inode_v3()v>java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
c:=CoefficientsOfUnivariatePolynomial(f){[n,n-1..1]};
for i in [1..n] do
c[i]:=c[i]*(-1)^i;
od;
p:=PowersumsElsyms(c,m*nn);
q:=[List(p{[1..nn]},i->i^0),p{[1..nn]}];
q[1][1]:= One( fam );
for i in [2..m] do
qi+
for j in [1..
Zero(fam)java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
for h in [1) flags & java.lang.StringIndexOutOfBoundsException: Range [72, 68) out of bounds for length 72
w:=w-(-1)^h*p
od;
q[i+1][j]:=w/i;
od;
od;
=[1];
c ret = bch2_disk_accounting_mod2 BTREE_TRIGGER_gc, nr ;
KEY_TYPE_inode_v3
c[i]:=c[i]*(-1)^i;
od;
c:=Reversed(c);
Add(c, One( fam ) );
return UnivariatePolynomialByCoefficients(fam,c,
IndeterminateNumberOfUnivariateRationalFunction(f));
end;
##################java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
java.lang.NullPointerException
## Tschirnhausen(<pol>[,<trans>][,true]) . . . . . Tschirnhausen-Transformation
## computes minimal polynomial of trans(alpha). If no <trans> is given, it
## is taken by random. An added true will also java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 0
##
InstallGlobalFunction(Tschirnhausen,function(arg)
local pol, fam, inum, r;
pol:=arg[1];
fam:=CoefficientsFamily
inum:=IndeterminateNumberOfUnivariateRationalFunction(pol);
java.lang.StringIndexOutOfBoundsException: Range [45, 5) out of bounds for length 46
CoefficientsOfUnivariatePolynomial(pol),inum+1);
if Length(arg)>1 and IsPolynomial(arg[2]) then
r:=CoefficientsOfUnivariatePolynomial(arg[2]);
else
repeat
([..Minimum(pol),
Random([2,2,2,2,3,3,3,4,5,6]))],
i-*Random(Integers)Integers))
until not .inode, pos.)
fi;
r:=UnivariatePolynomialByCoefficients(fam,r,inum+1);
Info(InfoPoly,2,"Tschirnhausen if (bch2_snapshot_is_ancestor(c, pos.snapshotksnapshot))
pol:=Resultant(pol,Indeterminate(fam,inum)-r,inum+1);
if Length(arg)>2 then
return [pol,r];
else
return pol;
fi;
end);
#######################################################ch2_trans_iter_exit(trans, iter);
##
#F TwoSeqPol( <f>, <m> ) . . . . . . . . . . . . . . . . . . compute f^{1+m}
TwoSeqPolfunction(oljava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
local f,c,n,nn,p,fam,i,j,w,q;
Info(InfoGalois,3,"TwoSeqPol ",m);
f:=pol;
fam:=CoefficientsFamily(java.lang.StringIndexOutOfBoundsException: Range [5, 35) out of bounds for length 14
n:=DegreeOfUnivariateLaurentPolynomial(f);
nn:=n*(n-1);
p:=0;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if p=1 then
repeat
f:=Tschirnhausen(pol);
until(Gcd(f,Derivative)=;
else
btree_iter iter;
fi;
c:=CoefficientsOfUnivariatePolynomial(f){[n,n-1..1]};
for i in [1..int ;
c[i]:=c[i]*(-1)^i;
od;
p:=PowersumsElsyms(c,nn);
p:=Concatenation([n* One( fam ) ],p);
q:=[];
for i in [1..nn] do
w:=0;
for j in [0..i] do
w:=w+m^j*Binomial(i,*p[j+]*pij+-[i1)
od;
q[i]:=w;
od;
:ElsymsPowersums(q,nn;
for i in [1..nn] do
c[i]:=c[i]*(-1)^i;
od;
c:=Reversed(c);
Add(c, One( fam ) );
c:=UnivariatePolynomialByCoefficients(fam,c,
IndeterminateNumberOfUnivariateRationalFunction(pol));
p:=1;
until DegreeOfUnivariateLaurentPolynomial(Gcd(c,Derivative(c)))=0;
return c;
end);
############################################################################java.lang.NullPointerException
##
#F GaloisSetResolvent(<pol>,<n>) <n>-set resolvent of <pol>
##
InstallGlobalFunction(GaloisSetResolvent,function(f,m)
local i,p,r,x,d;
xCoefficientsFamily(amilyObj(f))
IndeterminateNumberOfUnivariateRationalFunction(f));[symmetric] CH_card[java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 50
# remember, which resolvent types already failed (most likely for
# smaller sums), so we won't have to use them twice!
# e.g.: if 2-Sum is double, then 3-Sum will vbe double most likely!
if not IsBound(f!.failedResolvents) then
f!failedResolvents=;
fi;
# then for every root there is a negative one, causing trobles with sums
f!.failedResolvents:=Union(f!.failedResolvents,[0,1,2]);
fi;
i:=0;
d:=true;
while d do
if not i in f!.failedResolvents then
Info(InfoGalois,2,int ret = 0;
if i in [0,2,3] or bch2_inode_alloc_cursor_to_text(struct printbuf out *c,
if i=0 then
p:=f;
elif i=2 then
p:=Value(f,1/x)*x^DegreeOfUnivariateLaurentPolynomial(f);
p:=p/LeadingCoefficient(p);
elif i=3 then
p:=Value(f,1/x+1)*x^DegreeOfUnivariateLaurentPolynomial(f);
p:=p/LeadingCoefficient(p);
else
repeat
p:=Tschirnhausen(f);
until DegreeOfUnivariateLaurentPolynomial(Gcd(f,Derivative(f)))=0;
fi;
r:=SumRootsPol(p,m);
else
if i=1 then
p:=f;
elif i=4 then
p:=Value(f,x+1);
else
p:=Value(f,x-2);
fi;
r:=ProductRootsPol(p,m);
fi;
d:=DegreeOfUnivariateLaurentPolynomial(Gcd(r,Derivative(r)))>0;
if d and i<6
# note failure
AddSet(f!.failedResolvents,i);
fi;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
i:=i+name ...) inode_u->java.lang.StringIndexOutOfBoundsException: Range [41, 34) out of bounds for length 63
od;
return r;
end);
#############################################################################
##
#F GaloisDiffResolvent(🚫
##
InstallGlobalFunction(GaloisDiffResolvent,function(f)
local s,i,p,r,x,m,pc;
m:=DegreeOfUnivariateLaurentPolynomial(f);
x:=Indeterminate(CoefficientsFamily(FamilyObj(f)),
(
to to non
i:=0;
while DegreeOfUnivariateLaurentPolynomial(Gcd(r,Derivative(r))
if i=0 then
p:=f;
elif i=1 then
p:=Value(f,1/x)*x^DegreeOfUnivariateLaurentPolynomial(f);
elif i=2 then
p:=Value(f,1/x+1)*x^DegreeOfUnivariateLaurentPolynomial(f);
elif i=3 then
# 1/(x-3)
p:=Value(f,x-3);
p:=Value(p,1/x)*x^ struct bkey_validate_context bkey_validate_contextfrom
else
repeat
p:=Tschirnhausen(f);
until DegreeOfUnivariateLaurentPolynomial(Gcd(f,Derivative(f)))=0;
fi;
p:=p/LeadingCoefficient(p);
# The sum of the roots of p should be 0
pc:=CoefficientsOfUnivariatePolynomial(p);
s:=pc[Length(pc)-1];
#Print(p," ",s,"\n");
p:=Value(p,x-s/m);
Info(InfoGalois,3,"p=",p);
r:=SumRootsPol(p,m/2);
if DegreeOfUnivariateLaurentPolynomial(Gcd(r,Derivative(r)))=0 then
# xjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
:CoefficientsOfUnivariatePolynomial((r{(bkey_fsck_err_on(.->.!= LOGGED_OPS_INUM_inode_cursors
#p:=2*[1.=> bool" where
r:=UnivariatePolynomialByCoefficients(CoefficientsFamily(FamilyObj(f)),r);
fi;
i:=i+1;
od;
return r;
end);
#############[UNIV] n | L. DataSpace L }"
##
#F ShapeFrequencies . . . . . . . . . shape frequencies in transitive groups
##
# TODOmake flushableagain, e.g.
# using MemoizePosIntFunction
TRANSSHAPEFREQS := MakeWriteOnceAtomic
BindGlobal("java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [13, 8) out of bounds for length 50
apply (unfold DataSpace_def)
egroups of ",n," java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
fi;
if not IsBound(TRANSSHAPEFREQS[n])
TRANSSHAPEFREQS[n]\<noteq> j; p {
fi;
list:=TRANSSHAPEFREQS memset(, 0, sizeof*inode_u
if not IsBound(list[i
sh:=Partitions(n);
g:=TransitiveGroup(n,i);
fu:=List)-1],i->0)
for in dojava.lang.StringIndexOutOfBoundsException: Range [35, 36) out of bounds for length 35
ps:=ShallowCopy(CycleStructurePerm(Representative(j)));
pps:=[];
for k in [1..Length(psinode_u->i_atimejava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
if (psk)then
while inode_u->bi_ctime now;
Add(pps,k+1);
ps[k]:=ps[k]-1;
od;
fi;
od;
while Sum(pps)<java.lang.StringIndexOutOfBoundsException: Range [5, 3) out of bounds for length 4
Add(pps,1);
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
Sort(pps);
:java.lang.StringIndexOutOfBoundsException: Range [23, 19) out of bounds for length 25
if ps>0 then
:[ps]+Size
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
od;
fu:=fu/Size(g);
i:fu;
fi;
return list[i];
end);
##################################################### u64;
##
#F ProbabilityShapes(<pol>,[<discard>]) . . . . . . . . . Tschebotareff
##
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 0
local,,
cntcand,,alt,p,fac;
Info(InfoPerformance,2,"Using Transitive Groups Library");
f:=arg[1];
f:=f/LeadingCoefficient(f);
(f) then
Error("f must be java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 52
fi;
n:=found_slot* cpu<INT_MAX+1java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
if not TransitiveGroupsAvailable(n) then
Error("Transitive groups of degree ",n," are not available if (ret)
fi;
fac:=3;
if n>11 then
fac7
elif n>7 then
fac:=5; This java.lang.StringIndexOutOfBoundsException: Range [19, 12) out of bounds for length 33
fi;
cand struct bch_inode_unpacked *inode_u,
if Length(arg)=2 then
weg2];
else
weg:=[];
fi;
d:=Discriminant(f);
alt:= d>0 and ParityPol(Rationals,f)=1;
if alt then
:Filtered(;
fi;
p:=1;
mitZ"bringen
d:=d*DenominatorRat(d)^2
*Lcm(List(CoefficientsOfUnivariatePolynomial(f),DenominatorRat));
Info(InfoGalois,1,"Partitions Test");
n:=DegreeOfUnivariateLaurentPolynomial(f);
sh:=Partitions(n);
fu:=List([1..Length(sh)-1],ReturnFalse);
anz:=List(fu,i->0);
cnt:=0;
keineu:=0;
repeat
repeat
repeat
p: */
until not IsInt(d/p);
pm:=PolynomialModP(f,p);
until
DegreeOfUnivariateLaurentPolynomial (ret& java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
ps:=List(Factors(pm),DegreeOfUnivariateLaurentPolynomial);
Sort(ps); (ret&& start == min)
ps:Reversed(s;
ind:=Position(sh,ps)-1;
cnt:=cnt+1;
if ind>0 then
anz[ind]:=anz[indreturn ret;
if fu[ind]=false then
keineu:=0;
fu[ind]:=true;
cand:=Filtered(cand,i->TRANSProperties(n,i)[5][ind]);
if IsSubset(weg,cand) then
return [];
fi &-vgen,1;
# add power cycleshapes, we just need the powers to |g|/2
for i in [2..QuoInt(Lcm(ps),2)] do
pps:=PowerPartition(ps,i);
Sort(pps);
pps:=Reversed(pps);
fu[Position(sh,pps)-1]:=true;
od;
elif ForAny([1..NrTransitiveGroups(n)],i->TRANSProperties(n,i)[5]=fu) then
keineu:=keineu+1;
fi;
fi;
until Length(cand)<2 or keineu>fac*n or p>500*n;
cand:=Difference(cand,weg);
Info(InfoGalois,2,"cands:",cand);
if Length(cand)=0 then
return [];
elif Length(cand)=1 then
return cand;
fi;
anz:=anz/cnt;
ba:="infinity";
bk:=[];
for i in cand do
fu:=ShapeFrequencies(n,i);
a:=0;
for j in [1..Length(fu)] do
a:=a+(fu[j]-anz[j])^2;
od;
if a<ba then
ba:=a;
bk:[]
elif a=ba then
Add(bk,i);
fi;
od;
bk:=Difference(bk,java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 9
return bk;
end);
############################################################################java.lang.NullPointerException
##
#F PartitionsTest(<pol>,<prime>,<cand>,<discr ( bch2_err_matchesret,))
# java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
BindGlobal("bch2_trans_iter_exit(trans, &iter);
local n,i,sh,fu,ps,pps,ind,keineu,avoid,cf;
# Nenner mit in den Z"ahler bringen
cf:=CoefficientsOfUnivariatePolynomial(f);
avoid:=Lcm(Concatenation([NumeratorRat(d),DenominatorRat(d)],
List(cf,DenominatorRat),[NumeratorRat(Last(cf))]));
Info(InfoGalois,1,"Partitions Test");
n:=DegreeOfUnivariateLaurentPolynomial(f);
sh:=Partitions(n);
fu:=List([1..Length(sh)-1],ReturnFalse);
keineu:=0;
repeat
repeat
p:=NextPrimeInt =java.lang.StringIndexOutOfBoundsException: Range [24, 21) out of bounds for length 25
until not *If this was a directory, there shouldn't be any real dirents left -
ps there could bewhiteoutshash collisions) that we should
Sort(ps);* University of,Hungary
ps:=Reversed(ps);
ind:=Position(sh,ps)-1;
if ind>0 then
if fu[ind]=false then
keineu:=0;
fu[ind]:=true;
cand:=Filtered(cand,i->TRANSProperties(n,i)[5][ind]);
# add java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
pps:java.lang.StringIndexOutOfBoundsException: Range [33, 29) out of bounds for length 36
Sort(pps);
bch2_bkey_get_iter(java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
fu[Position(sh,pps)-1]:=true;
od;
elifForAny(..NrTransitiveGroups(),i>RANSProperties(n,i)[5]=fu) then
keineu:=keineu+1;
fi;
fi;
until Length(cand)=1 inode llu:unot java.lang.StringIndexOutOfBoundsException: Range [49, 38) out of bounds for length 49
Info(InfoGalois,2,"cands:",cand);
return [p,cand];
end);
################################################u32
##
#F GaloisType(<pol>,[<cands>]) .();
##
onalnd argument may java.lang.StringIndexOutOfBoundsException: Range [42, 7) out of bounds for length 12
## permutation groups that will be considered as possible Galois groups.
of 2nd argument isnot documented.
##
BindGlobal("DoGaloisType",function(arg)
local f,n,p, * but there could(from hash collisions)hould
orbs,GetResolvent,norb,act,repro,minpol,ext,ncand,pos,step,lens,gudeg,
typ,pkt,fun *delete:
GrabCodedLengths,UnParOrbits,cnt,polring,basring,indet,indnum,
extring,lpos;
Info(InfoPerformance,2,"Using Transitive Groups Library");
GetProperty := function(l,prop)
local i;
for i
if i[1]= *cdatalen
return i;
fi;
od;
return falseig_slen;
end
edLengthsjava.lang.StringIndexOutOfBoundsException: Range [35, 30) out of bounds for length 35
local i,l;
lst:=Flat(lst);
l:=[];
for i in lststruct jffs2_compressor *this, *best=NULL;
ifunsigned char = NULL, *tmp_buf;
AddSet(l,i mod M(2LogInt(,101)));
od;
return l;
end
GetResolvent:=function(pol, (-b#_ java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
bch2_err_matchesjava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
if LeadingCoefficienttrans"nllu lin cou underf"bibi_inum)
polstruct bch_fs * -c;
list_for_each_entry(his,&ffs2_compressor_list, list) {
ifjava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
if nr=1 bkey_s_ck
;
elif nr=2do {
nr]=(pol,)
elif nr=4 then
if DegreeOfUnivariateLaurentPolynomial(pol)=8 then
#special casedeg8,easy pre-factorization
0,NULL)java.lang.StringIndexOutOfBoundsException: Range [5, 1) out of bounds for length 57
store DiffResolvent for future use
orbs[6]:=p;
pf=Concatenation(List(actors(p
i->Factors(Value(i,indet^2)))) )(java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 30
# replace if ((this->compr_bufif (his->compr_buf_size <orig_slen)
p:=Value(p,indetstructprintbufbuf PRINTBUF
StoreFactorsPol(polring,p intret;
orbs[nr]:=p;
else
orbs[nr]:=GaloisSetResolvent(pol,4);
fi;
elif nr=6 then
orbs[nr]:=GaloisDiffResolvent(pol);
elif nr=9 then
orbs[nr]:=TwoSeqPol(pol,2);
else
Error("Operation ",nr," not defined");
fi;
if nr<>4
#we minimize, unless we have already computed a factorization
orbs[nr]:=MinimizedBombieriNorm(orbs[nr])[1];
fi;
fi;
Info(InfoGalois,5,"Resolvent is =",orbs[nr],"\n");
return orbs[nr];
end;
UnParOrbits := function(l)
local i,m;
m:=[];
for i in l do
i:=AbsInt(i);
while i>1000 do
Add(m,i mod 1000);
i:=i-1000;
od;
Add(m,i);
od;
return Collected(m);
end;
norb:=["Roots","2-Sets","3-Sets","4-Sets","5-Sets","Diff",
7,"Blocks","2-Sequences"];
f:=arg[1];
basring:=Rationals;
indnum:=IndeterminateNumberOfUnivariateRationalFunction(f);
indet:=Indeterminate(basring,indnum);
polring:=PolynomialRing(basring,[indnum]);
if LeadingCoefficient(f)<>1 then
f:=f/LeadingCoefficient(f);
fi;
k:=Lcm(List(CoefficientsOfUnivariatePolynomial(f),DenominatorRat));
if k>1 then
f:=indet^DegreeOfUnivariateLaurentPolynomial(f)*Value(f,k/indet);
fi;
# minimize f
f:=MinimizedBombieriNorm(f)[1];
if not(IsIrreducibleRingElement(f)) then
Error("f must be irreducible");
fi;
n:=DegreeOfUnivariateLaurentPolynomial(f);
if not TransitiveGroupsAvailable(n) then
Error("Transitive groups of degree ",n," are not available");
fi;
if Length(arg)=1 then
cand:=[1..NrTransitiveGroups(n)];
else
cand:=arg[2];
fi;
d:=Discriminant(f);
alt:= d>0 and ParityPol(basring,f)=1;
if alt then
cand:=Filtered(cand,i->TRANSProperties(n,i)[4]=1);
fi;
p:=PartitionsTest(f,1,cand,d);
cand:=p[2];
p:=p[1];
orbs:=[];
# 2Set-Orbit Lengths
co:=List([1..NrTransitiveGroups(n)],i->TRANSProperties(n,i)[6]);
if Length(Set(co{cand}))>1 then
Info(InfoGalois,1,"2-Set Resolvent");
#degs:=List(co,GrabCodedLengths);
dco:=[];
for i in cand do
dco[i]:=UnParOrbits(co[i]);
od;
degs:=Set(Flat(List(dco,x->List(x,y->y[1]))));
res:=GetResolvent(f,2);
resf:=Factors(polring,res:factoroptions:=rec(onlydegs:=degs));
StoreFactorsPol(polring,res,resf);
pat:=Collected(List(resf,DegreeOfUnivariateLaurentPolynomial));
cand:=Filtered(cand,i->dco[i]=pat);
if Length(Set(co{cand}))>1 then
pat:=List(Collected(List(resf,i->ParityPol(basring,i)*DegreeOfUnivariateLaurentPolynomial(i))),
i->SignInt(i[1])*(1000*(i[2]-1)+AbsInt(i[1])));
Sort(pat);
cand:=Filtered(cand,i->co[i]=pat);
fi;
Info(InfoGalois,1,"Candidates :",cand);
fi;
# 2Seq-Orbit Lengths
co:=List([1..NrTransitiveGroups(n)],i->TRANSProperties(n,i)[7]);
if Length(Set(co{cand}))>1 then
Info(InfoGalois,1,"2-Seq Resolvent");
#degs:=List(co,GrabCodedLengths);
dco:=[];
for i in cand do
dco[i]:=UnParOrbits(co[i]);
od;
degs:=Set(Flat(List(dco,x->List(x,y->y[1]))));
res:=GetResolvent(f,9);
resf:=Factors(polring,res:factoroptions:=rec(onlydegs:=degs));
StoreFactorsPol(polring,res,resf);
pat:=Collected(List(resf,DegreeOfUnivariateLaurentPolynomial));
cand:=Filtered(cand,i->dco[i]=pat);
if Length(Set(co{cand}))>1 then
pat:=List(Collected(List(resf,i->ParityPol(basring,i)*DegreeOfUnivariateLaurentPolynomial(i))),
i->SignInt(i[1])*(1000*(i[2]-1)+AbsInt(i[1])));
Sort(pat);
cand:=Filtered(cand,i->co[i]=pat);
fi;
Info(InfoGalois,1,"Candidates :",cand);
fi;
# 3Set-Orbit Lengths
co:=List([1..NrTransitiveGroups(n)],i->TRANSProperties(n,i)[8]);
if n>=5 and Length(Set(co{cand}))>1 then
Info(InfoGalois,1,"3-Set Resolvent");
dco:=[];
for i in cand do
dco[i]:=UnParOrbits(co[i]);
od;
degs:=Set(Flat(List(dco,x->List(x,y->y[1]))));
res:=GetResolvent(f,3);
resf:=Factors(polring,res:factoroptions:=rec(onlydegs:=degs));
StoreFactorsPol(polring,res,resf);
pat:=Collected(List(resf,DegreeOfUnivariateLaurentPolynomial));
cand:=Filtered(cand,i->dco[i]=pat);
if Length(Set(co{cand}))>1 then
pat:=List(Collected(List(resf,i->ParityPol(basring,i)*DegreeOfUnivariateLaurentPolynomial(i))),
i->SignInt(i[1])*(1000*(i[2]-1)+AbsInt(i[1])));
Sort(pat);
cand:=Filtered(cand,i->co[i]=pat);
fi;
Info(InfoGalois,1,"Candidates :",cand);
fi;
# now search among the remaining candidates for a better
# discriminating property
repro:=Union(List(cand,
i->List(TRANSProperties(n,i){[9..Length(TRANSProperties(n,i))]},
j->j[1])));
# filter out the properties we cannot use
repro:=Filtered(repro,i->i>0);
while Length(cand)>1 and Length(repro)>0 do
act:=repro[1];
repro:=Difference(repro,[act]);
noca:=Filtered(cand,i->Length(TRANSProperties(n,i))<=8‹‹\S2.33› in
GetProperty(TRANSProperties(n,i),act)=false);
cand:=Difference(cand,noca);
co:=[];
for i in cand do
co[i]:=GetProperty(TRANSProperties(n,i),act);
co[i]:=co[i]{[2..Length(co[i])]};
od;
if Length(Set(co{cand}))>1 then
if act>=4 and act<=6‹"PfaltzSlapal:2013"› for additional useful
Info(InfoGalois,1,norb[act]," Resolvent");
dco:=[];
for i in cand do
co[i]:=co[i][1]; # throw away unneeded list
dco[i]:=UnParOrbits(co[i]);
od;
degs:=List(Compacted(co),GrabCodedLengths);
res:=GetResolvent(f,act);
resf:=Factors(polring,res:factoroptions:=rec(onlydegs:=Union(degs)));
StoreFactorsPol(polring,res,resf);
pat:=Collected(List(resf,DegreeOfUnivariateLaurentPolynomial));
cand:=Filtered(cand,i->dco[i]=pat);
if Length(Set(co{cand}))>1 then
pat:=List(Collected(List(resf,i->ParityPol(basring,i)*DegreeOfUnivariateLaurentPolynomial(i))),
i->SignInt(i[1])*(1000*(i[2]-1)+AbsInt(i[1])));
Sort(pat);
cand:=Filtered(cand,i->co[i]=pat);
fi;
elif act>20 and act<50
point stabil)
if QuoInt(act,10)=2 then
# avoid using the discriminant (which can be too big), but use
# the non-square part instead:
Info(InfoGalois,1,"Alternating subgroup orbits on ",
norb[act mod 10]);
minpol:=indet^2-
Product(List(Filtered(Collected(Factors(NumeratorRat(d))),
i->not IsInt(i[2]/2)),i->i[1]))/
Product(List(Filtered(Collected(Factors(DenominatorRat(d))),
i->not IsInt(i[2]/2)),i->i[1]));
else
Info(InfoGalois,1,"point stabilizer orbits on ",norb[act mod 10]);
minpol:=f;
fi;
act:=act mod 10;
ext:=AlgebraicExtension(basring,minpol);
extring:=PolynomialRing(ext,[indnum]);
res:=List(Factors(GetResolvent(f,act)),
i->AlgExtEmbeddedPol(ext,i));
lens:=[];
for step in [1,2] do
dco:=[];
for i in cand do
if step=1 then
dco[i]:=List(co[i],UnParOrbits);
lens[i]:=List(dco[i],i->Sum(List(i,j->j[1]*j[2])));
else
dco[i]:=StructuralCopy(co[i]);
fi;
od;
# compute, which factor we will not have to factor at all
# since they split always the same
gudeg:=[];
for j in Set(Flat(lens)) do
pat:=[];
for i in cand do
Add(pat,Collected(dco[i]{Filtered([1..Length(dco[i])],
k->->lens[i][k]=j)}));
od;
if Length(Set(pat))=1 then
Info(InfoGalois,2,"ignoring length ",j);
else
Add(gudeg,j);
fiunfolding closed_def using assms by (simp add: least Inf_greatest Inf_lower subset_eq)
od;
for i in res do
if (DegreeOfUnivariateLaurentPolynomial(i) in gudeg)
and (Length(Set(dco{cand}))>1) then
if step=1 then
pat:=Collected(List(Factors(extring,i),DegreeOfUnivariateLaurentPolynomial));
else
pat:=List(Collected(List(Factors(extring,i),
i->ParityPol(ext,i)*DegreeOfUnivariateLaurentPolynomial(i))),
i->SignInt(i[1])*(1000*(i[2]-1)+AbsInt(i[1])));
Sort(pat);
fi;
ncand:=[];
for j in cand do
pos:=Position(dco[j],pat);
if pos<>fail
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
fi;
od;
cand:=ncand;
fi;
od;
od;
elif act>100 and act<1000
# factor groups Galois
typ:=QuoInt(act,100);
pkt:=act mod 100;
Info(InfoGalois,1,"Galois group of ",norb[typ],
" factor on ",pkt," points");
dco:=[];
for i in cand do
dco[i]:=ShallowCopy(co[i][1]);
od;
res:=Filtered(Factors(GetResolvent(f,typ)),i->DegreeOfUnivariateLaurentPolynomial(i)=pkt);
i:=1;
while i<=Length
pat:=GaloisType(res[i]);
if IsList(pat) then
Error("Sub-Galois call not unique!");
fi;
ncand:=[];
j in cand do
if pat in dco[j] then
Add(ncand,j);
Unbind(dco[j][Position(dco[j],pat)]);
fi;
cand:=ncand;
i:=i+1;
od;
elif act>1000 and act<10000
# factor groups
typ:=QuoInt(act,1000);
act:=act mod 1000; ssumes "X ⊆ Y"
pkt:=QuoInt(act,10);
act:=act mod 10;
Info(InfoGalois,1,norb[typ]," factor on ",pkt," points, on ",
norb[act]);
factors:=Filtered(Factors(GetResolvent(f,typ)),
i->DegreeOfUnivariateLaurentPolynomial(i)=pkt);
if act=2 or act=3 then
fun:=functi shows "x \<cl
return GaloisSetResolvent(pol,act);
end;
elif act=9 then
fun=function(pol)
return TwoSeqPol(pol,2);
end;
else
Error("This operation is not supported for factor groups!");by(simp add:bind_UNION cl_Supjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
fi;
res:=List(factors,fun);
for step in [1,2] do
dco:=[]
for i in cand do
if step=1 then
dco[i]:=List(co[i],UnParOrbits);
else
dco[subsection\\<> Matroidsandlabel{ec:-matroids \<lose
fi;
od;
for i in res do
if (Length(Set(co{cand}))>1) then
if step=1 then
pat:=Collected(List(Factors(polring,i),DegreeOfUnivariateLaurentPolynomial));
pat:=List(Collected(List(Factors(polring,i),
-ParityPol(basring,i*DegreeOfUnivariateLaurentPolynomiali))
i->SignInt(i[1])*(1000*(i[2]-1)+AbsInt(i[1])));
Sort(pat);
fi;
ncand:=[];
for j in cand do
pos:=Position(dco[j],pat);
if pos<>fail then
Add(ncand,j);
Unbind(dco[j][pos]);
fi;
od;
cand:=ncand;
fi;
od;
od;
elif act>10000 and act<100000 then
# stabilisator orbits
typ:=QuoInt(act,10000);
act:=act mod 10000;
pkt:=QuoInt(act,10
act:=act mod 10;
Info(InfoGalois,1,norb[java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 0
norbact)
stabs:=Filtered(Factors(GetResolvent(f,typ)),
i->DegreeOfUnivariateLaurentPolynomial(i)=pkt);
# stabilizers, which have already been identified completely
nostanr:=[];
for minpol in stabs do
stanr:=Difference([1..Length(stabs)],nostanrdefinition exchange : "' \<Rightarrow>'a )\<ightarrow> bool" where
ext:=AlgebraicExtension(basring,minpol);
extring:=PolynomialRing(ext,[indnum]);
res=(((,ct),
i->AlgExtEmbeddedPol(ext,i));
lens:=[];
for step in [1,2] do
dco:=[];
foriin do
if step=1 then
dco[i]:=List(co[i],i->List(lemmasexchangeI =iffD2OFexchange_def, rule_format]
lens[i]:=List(dco[i],i->Sum(List(i[1],j->j[1]*j[2])));
else
dco[i]:=List(StructuralCopy(co[i]),i->i{stanr});
fi;
od;
# compute, which factor we will not have to factor at all
# since they split always the same
gudeg:[];
for j in Set(Flat(lens)) do
pat:=[];
for i in cand do
Add(pat,Collected(dco[i]{Filtered([1..Length(dco[i])],
k->lens[i][k]=j)}));
od;
if Length(Set(pat))=1 then
Info(InfoGalois,2,ignoring length ",j);
else
Add(gudeg,j);
fi;
od;
for i
if (DegreeOfUnivariateLaurentPolynomial(i) in gudeg)
(Setdcoc})>)then
if step=1 then
pat:=Collected(List(Factors(extring,i),DegreeOfUnivariateLaurentPolynomial));
else
pat:=List(Collected(List(Factors(extring,i),
i->ParityPol(ext,i)*DegreeOfUnivariateLaurentPolynomial(i))),
i->SignInt(i[1])*(1000*(i[2]-1)+AbsInt(i[1])));
Sort(pat);
fi;
ncand:=[];
for j in cand do
pos:=Filtered([1..Length(dco[j])],i->pat in dco[j][i]);
if pos<>[] then
#wefound an occurrence:Note the possible stabilizers
stanr:=stanr{pos};
# and update the patterns accordingly.
dco:=List(dco,i->i{pos});
Add(ncand,j);
# mark occurrence as found
for k in dco[j] do
# we # we may
lpos:=Position(dco[j],pat);
if lpos=fail then
lpos:=Position(dco[j],[pat]);
fi
k[lpos]:="weg";
od;
fi;
od;
cand:=ncand;
fi;
od;
od;
if Length(stanr)=1 then
#the stabilizer has been identified completely, we will not
# have to deal with this stab anymore
=(ostanr,stanr)
fi;
od;
else
Error("property ",act," not proof -
fi;
fi;
cand:=Union(cand,noca);
if Length(cand)>1 then
Info proof(rule antisym)
fi;
od;
# Wenn jetzt mehrere, dann mu"s es Zykelstrukturen geben, so da"s
# sie sich unterscheiden!(Ausnahmef"alle au"senvorgelassen)
cnt:=0;
while (Length(cand)>1 and cnt<=10000) do
p:=PartitionsTest(f,p,cand,d);
p:=p[1];
cnt:=cnt+1;
od;
# still no discrimination ?
ifLength()>1 then
# special cases
if n=12 and
IsSubset(cand,[273,292]) then
#2SetStab 18 factor
res:First((GetResolvent(,),i>DegreeOfUnivariateLaurentPolynomiali)18);
#2SetStab 9 factor
res:=First usingcl_inf_le byblast
res:=GaloisType(res);
if res=22 then
returnthen ?hesis1 by blast
else
return 292;
fi;
fi;
Error(cand," feasible discrimination not known"l :
fi;
return[];
end);
InstallMethodGaloisType,for ",truejava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
[IsUnivariateRationalFunction and IsPolynomial],0,
DoGaloisType);
InstallOtherMethod(GaloisType,"for polynomials and list",true,
[IsUnivariateRationalFunction and java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
DoGaloisType);
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.393Angebot
¤
*Eine klare Vorstellung vom Zielzustand
|
|